Wie mache ich meine Zeichenkette nicht empfindlich gegenüber kleinen Unterschieden im Leerraum?

8

Ich habe einige Tests, die Zeichenfolgen überprüfen, die dem Benutzer angezeigt werden.

Ich möchte nicht, dass der Test aufgrund von Änderungen in den Einrückungen oder Zeilenumbrüchen etc. fehlschlägt. Ich suche also nach etwas wie einer Zeichenkette, die das vergleicht.

  • Ignoriere Leerzeichen als Anfang der Zeichenfolge (einfach benutze string.trim)
  • Wenn eine beliebige Anzahl von nebeneinander liegenden Leerräumen übereinstimmt, als wäre es ein einzelnes Leerzeichen.

Ich könnte anfangen, eine Regex zu erstellen, aber jemand anderes könnte eine bessere Lösung daher diese Frage haben.

    
Ian Ringrose 28.07.2011, 12:52
quelle

4 Antworten

6

Das Schreiben eines benutzerdefinierten Vergleichs wäre schwierig, wenn Sie nur für Leerzeichen benötigen. Ich würde vorschlagen, Regex zu normalisieren, d. H.

%Vor%

Offensichtlich beide Operanden normalisieren und dann auf Gleichheit als normal prüfen.

    
Marc Gravell 28.07.2011, 12:59
quelle
22

Sie können CompareOptions verwenden:

%Vor%

Auszug aus MSDN:

  

Gibt an, dass der Zeichenfolgenvergleich Symbole wie z   Leerzeichen, Interpunktion, Währungssymbole, Prozent   Zeichen, mathematische Symbole, das kaufmännische Und, und so weiter.

    
PVitt 28.07.2011 12:58
quelle
1

Sie können auch die folgende benutzerdefinierte Funktion verwenden

%Vor%

Und dann benutze es auf folgende Weise

%Vor%     
Zain Ali 13.03.2013 09:50
quelle
-1

Ich habe eine kleine Funktion geschrieben, die den Eingabe-String sowohl am Anfang als auch am Ende trimmt. Dann geht es in einer Schleife, um nach doppelten Räumen zu suchen, und während es doppelte Räume gibt, werden sie durch eins ersetzt. Am Ende wirst du nur ein Leerzeichen behalten.

%Vor%

Hoffe, das hilft!

    
Abbas 28.07.2011 13:05
quelle

Tags und Links