Erlaubte Zeichen sind (mindestens) A-Z, a-z, 0-9, ö, Ö, ä, ä, å, Å und deutsch, lettisch, estnisch (falls vorhanden) spezielle Zeichen? Gibt es eine fertige Methode oder muss ich Blacklist (nicht erlaubte Zeichen) und reguläre Ausdrücke IsMatch machen? Wenn kein Ready-Made wie Blacklist zu verwenden?Wie finde ich heraus, ob die Zeichenfolge nicht-alphanumerische Zeichen in C# /. NET 2.0 enthält?
Antwort
Ich weiß nicht, wie Sonderzeichen aus allen diesen Sprachen kategorisiert werden, aber Sie könnten überprüfen, ob die Char.IsLetterOrDigit
Methode mit dem übereinstimmt, was Sie tun möchten. Es funktioniert zumindest für die Ziffern und Buchstaben I getestet:
string test = "Aasdf345ÅÄÖåäöéÉóÓüÜïÏôÔ";
if (test.All(Char.IsLetterOrDigit)) { ... }
Die Char.IsLetterOrDigit
kehrt gilt für Zeichen, die in Unicode als UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter oder DecimalDigitNumber kategorisiert sind.
Was ist test.All? Das ist keine String-Methode, ist es eine Art von Erweiterungsmethode? Oder eine LINQ-Methode? – Task
@Task 'All' ist eine linq-Erweiterung von string. Siehe http://msdn.microsoft.com/en-us/library/system.string.aspx – mydogisbox
Ah! Der Abschnitt "Erweiterungsmethoden" der Dokumentation ist neu für mich, ich hatte das vorher nicht gesehen. Ich glaube, ich habe mich im früheren Bereich "Eigenschaften" oder "Methoden" daran gewöhnt, alles zu finden, was ich brauche. Vielen Dank! – Task
Untersuchen Sie char.IsLetterOrDigit(char)
.
Zum Beispiel:
myString.All(c => char.IsLetterOrDigit(c));
Nur neugierig, aber warum wurde das abgelehnt? Soweit ich das beurteilen kann, ist es ein absolut gültiger Weg, um das zu tun, was das OP forderte. – Flynn1179
Ah .. habe mich nur genauer angesehen; habe die 0-9-Anforderung dort nie bemerkt.Ich habe meine Antwort dahingehend geändert, dass "IsLetterOrDigit" anstelle von "IsLetter" verwendet wird. – Flynn1179
Eine Abkürzung dafür ist 'myString.All (char.IsLetterOrDigit);' – gls123
Eine schwarze Liste für Zeichen ist wahrscheinlich ziemlich groß :-)
Sie den regulären Ausdruck unabhängig,
^[\d\p{L}]+$
übereinstimmen Dezimalstellen und Buchstaben verwenden können von Skript.
Dieser reguläre Ausdruck besteht aus einer Zeichenklasse mit den Kürzeln \d
- die jede Ziffer (230 insgesamt in der BMP) und \p{L}
enthält, die als „Buchstaben“ (46.817 im BMP) klassifiziert jedes Unicode-Zeichen enthält. Die Zeichenklasse wird dann mindestens einmal wiederholt und zwischen ^
und $
eingebettet - den Anfangs- und Endankern der Zeichenkette, so dass sie mit der vollständigen Zeichenkette übereinstimmt.
Für einige regex Motoren, da Sie in lateinischen Buchstaben nur interessiert sind, offenbar konnte man aber auch
^[\d\p{Letter}]+$
verwenden, wird .NET dies nicht unterstützen. Der erste regex, der oben erwähnt wird, fängt tatsächlich alles ein, das eine Ziffer oder ein Buchstabe in irgendein Skript ist. So wird es pflichtgemäß auf indische oder arabische Zahlen und hebräische, kyrillische und andere nicht-lateinische Schriften abgestimmt. Je nachdem, was Sie wollen, ist dies möglicherweise nicht angebracht.
Wenn das ein Problem darstellt, dann sehe ich keine bessere Option als explizit die Zeichen auflisten, die Sie zulassen möchten. Ich halte es jedoch für gefährlich, anzunehmen, dass Text in einer bestimmten Sprache immer auf das Skript dieser Sprache beschränkt ist. Wenn ich einen tschechischen oder polnischen Namen in einem deutschen Text schreiben würde, würde ich wahrscheinlich mehr als nur [a-zA-ZäöüÄÖÜß]
brauchen.
+1 für die \ p {option} –
danke! kannst du bitte erklären, wie^[\ d \ p {L}] + $ funktioniert. Ich überprüfte aus dem Internet, aber ich konnte es nicht ganz zusammenfassen ... –
Es wäre einfacher, die Übereinstimmung der zulässigen Zeichen mit einer falschen Rückgabe zu ermitteln.
- 1. Wie finde ich heraus, ob ein Prozess in C läuft?
- 2. Wie finde ich heraus, ob eine .NET-Assembly nicht verwalteten Code enthält?
- 3. Wie finde ich heraus, welches Plugin die gewünschte Klasse enthält?
- 4. wie überprüfen, ob Zeichenfolge enthält Zeichen ‚+‘
- 5. Wie finde ich heraus, ob ein Objekt gesperrt ist? C#
- 6. Wie finde ich heraus, ob eine Zeichenfolge in Python in einer anderen Zeichenfolge ist?
- 7. Wie finde ich heraus, ob die Zeit vergangen ist? Swift
- 8. Wie finde ich heraus, ob die Kamera verwendet wird?
- 9. Überprüfen Sie, ob Zeichenfolge enthält mindestens zwei Alpha-Zeichen
- 10. Wie finde ich heraus, ob eine Zeichenfolge in Ruby mit einer anderen Zeichenfolge beginnt?
- 11. Wie finde ich heraus, ob das erste Zeichen eines Strings eine Zahl in VB.NET ist?
- 12. Überprüfen, ob Zeichenfolge bestimmte Zeichen enthält
- 13. Überprüfen Sie, ob eine Zeichenfolge enthält Zeichen
- 14. Wie finde ich heraus, ob Cookie in Flask App
- 15. Wie finde ich heraus, ob ein Element in jquery existiert?
- 16. Überprüfen, ob die Zeichenfolge die Umgebungsvariable enthält
- 17. Python: Überprüfen, ob eine Zeichenfolge chinesisches Zeichen enthält?
- 18. Wie finde ich den aktuellen Überlaufprüfkontext heraus?
- 19. Wie finde ich heraus, ob das Blatt leer ist?
- 20. Wie finde ich heraus, ob DStream leer ist?
- 21. ActiveDirectory: Wie finde ich heraus, ob eine Domain verfügbar ist?
- 22. Wie finde ich heraus, ob ein Steuerelement gerade ungültig ist?
- 23. Wie finde ich heraus, ob ein Termin privat ist
- 24. Wie finde ich heraus, ob Element von jQuery umschlossen ist?
- 25. Wie finde ich heraus, ob das System die Schriftart hat, die ich in MFC benötigte?
- 26. Wie finde ich heraus, ob eine Klasse instanziiert wurde?
- 27. Wie finde ich heraus, ob ein Timer läuft?
- 28. Wie finde ich heraus, ob 'svn up' erfolgreich beendet wurde?
- 29. wie zu überprüfen, ob eine Zeichenfolge ein Zeichen enthält
- 30. Wie finde ich eine Reihe von Zeichen in einer Zeichenfolge
Ein weiterer Thread mit Antworten zu prüfen http://StackOverflow.com/Questions/2371780/ Könnte zusätzliche Einblicke bieten. –
mögliches Duplikat von [.net Regular Expression, um jede Art von Buchstaben aus einer beliebigen Sprache zu finden] (http://stackoverflow.com/questions/2949861/net-regular-expression-to-match-any-kind-of-letter- from-any-language) – GvS