Wie bestimmen Sie, ob ein Char ist ein Buchstabe von A-Z?
Wie stellen Sie fest, ob ein Buchstabe im Bereich von A-Z oder Ziffern 0-9? Wir sind immer einige Daten beschädigt "I_999Š=ÄÖÆaðøñòòñ".
Dachte ich, ich könnte mit den Char.IsLetterOrDigit("Š") auf ID des fehlerhaften Daten aus "I_999Š", aber unerwartet dies ist true zurückgeben. Ich muss trap diese, irgendwelche Gedanken?
Natürlich gibt es true zurück. "Š" ist ein Brief. Nur weil es nicht in Englisch verwendet, macht es nicht ein nicht-Buchstabe.
Sie sollten auch versuchen zu beheben, die Ursache für die Beschädigung, wenn möglich.
Sie sollten auch versuchen zu beheben, die Ursache für die Beschädigung, wenn möglich.
InformationsquelleAutor user38349 | 2008-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, es gibt zwei schnelle Möglichkeiten. Die erste ist die Verwendung eines regulären Ausdrucks die zweite ist die Anwendung der Asc () - Funktion bestimmen, wenn der Ascii-Wert ist in der Größenordnung von den zulässigen Zeichen. Ich persönlich würde die Nutzung von Asc ().
Auf jeden Fall. A-Z ASCII-65..90, 0-9 ASCII 48..57
Der Asc () - Funktion ist verfügbar in VB.NET wie gut, das gleiche zu tun.
Angesichts der Kontext (nicht zu wissen, die eingehende Zeichen-Kodierung), diese Antwort ist einfach falsch.
InformationsquelleAutor EBGreen
Kann ich nicht helfen, aber beachten Sie, dass jeder scheint zu sein, fehlt das eigentliche Thema: Ihre Daten "Korruption" zu sein scheint ein offensichtliches Zeichen-encoding-problem. Deshalb, egal, was Sie mit den Daten machen, werden Sie (mis)die Behandlung der Symptome und ignorieren die Ursache.
Genau zu sein, Sie scheinen zu versuchen, zu interpretieren, die empfangene Binär-BYTES als ASCII-text, wenn diese BYTES wurden fast-sicherlich beabsichtigt zur Darstellung von text codiert als etwas-anderes-als-ASCII-Zeichen.
Sollten Sie herausfinden, welche Zeichenkodierung gilt für die Zeichenkette, die Sie erhalten. Dann sollten Sie Lesen, dass die Daten während der Anwendung die entsprechende Zeichenkodierung Transformationen.
Lesen Sie Joel Spolsky ' s Artikel, der betont, dass "There Ain' T No such Thing As Plain Text".
InformationsquelleAutor Rob Williams
Sollte einfach sein:
InformationsquelleAutor weiran
Könnte man mit einem regulären Ausdruck herausfiltern die schlechten Charaktere ... (Regex verwenden.IsMatch stattdessen, wenn Sie nur brauchen, es zu erkennen)
InformationsquelleAutor Yuliy
oder
EDIT:
Ist es etwas falsch mit dieser Antwort, die garantiert, dass die zwei anonymen downvotes? Sprechen, und ich werde es beheben. Ich merke, dass ich Links aus einem "Damals" (ist jetzt behoben), aber ich wollte dies als pseudocode.
InformationsquelleAutor P Daddy
Der einzige Weg, um sicherzustellen, dass Sie den Umgang mit druckbaren ASCII-Zeichen, unabhängig von der Kodierung in das Programm oder sogar im string in der Frage ist zu überprüfen jedes Zeichen für einen gültigen Wert zwischen 32 und 126 (127 = Löschen -- nicht wirklich eine 'druckbare Zeichen').
d.h.
Öffentliche Funktion IsASCII(inString As String, Optional bPrintableOnly As Boolean = True) ' 127 = Löschen (non-printing) < 32 = steuerzeichen auch nicht drucken
Dim unterergrenzwert Als Int32 = Wenn(bPrintableOnly, 32, 0)
Dim upperLimit Als Int32 = Wenn(bPrintableOnly, 127, 128)
End Function
Ende Modul
System.String
ist UTF-16-per definition.Ja, ich war zu erwähnen, aber-wir reden hier nicht über Codierungen, aber, ob oder nicht ein Zeichen (Kodierung) ordnet der ASCII-Zeichensatz (durch Wert). Das code-snippet geschrieben ich soll bestimmen, ob ein Charakter wird Fehler verursachen stromabwärts, in diesem Fall ist ein mainframe, der hat keine Vorstellung von Zeichen, die etwas anderes als eine Einzel-byte-ASCII. Diese Zeichen, die wind-up UTF-8 codiert und alle, die den MSB-Satz wird die Ursache für Verarbeitungsfehler, da wird jeder ASCII-control-Zeichen, daher der Standard-unterergrenzwert der 32.
InformationsquelleAutor jinzai
Nutzung von Asc(char) - Funktion. Es gibt ein ANSI-Zeichen-Code von 0 bis 255. Überprüfen Sie ANSI Character Codes Chart
InformationsquelleAutor Owl City
Versuchen Sie den folgenden code:
InformationsquelleAutor Ghassen Arfaoui