web-dev-qa-db-de.com

Entfernen Sie alle Whitespace mit Regex aus dem C # -String

Ich baue eine Reihe von Nachnamen, die durch Bindestriche getrennt sind. Manchmal wird dort ein Leerraum eingeklemmt. Ich muss alle Leerzeichen vom Endergebnis entfernen.

Beispielstring zur Bearbeitung:

Anderson-Smith-Smith

Es muss als (kein Leerzeichen nach Anderson) enden:

Anderson-Reed-Smith

Die Nachname-Zeichenfolge befindet sich in einer Zeichenfolgenvariablen, LastName.

Ich verwende einen regulären Ausdruck:

Regex.Replace(LastName, @"[\s+]", "");

Das Ergebnis davon ist:

Anderson-Smith-Smith.

Ich habe auch versucht:

Regex.Replace(LastName, @"\s+", "");

und

Regex.Replace(LastName, @"\s", "");

Was mache ich falsch?

36
BattlFrog

Anstelle einer RegEx verwenden Sie Replace für etwas so einfaches:

LastName = LastName.Replace(" ", String.Empty);
120
Gabe

Regex.Replace ändert nicht sein erstes Argument (erinnern Sie daran, dass Strings in .NET nicht veränderbar sind), so der Aufruf

Regex.Replace(LastName, @"\s+", "");

lässt den String LastName unverändert. Sie müssen es so nennen:

LastName = Regex.Replace(LastName, @"\s+", "");

Alle drei Ihrer regulären Ausdrücke hätten funktioniert. Der erste Regex würde jedoch auch alle Pluszeichen entfernen, was meiner Meinung nach unbeabsichtigt wäre.

49
dasblinkenlight

Keine Regex nötig. Dadurch werden auch Tabulatoren, Zeilenumbrüche usw. entfernt

var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));

WhiteSpace-Zeichen: 0009 , 000a , 000b , 000c , 000d , 0020 , 0085 , 00a0 , 1680 , 180e , 2000 , 2001 , 2002 , 2003 , 2004 , 2005 , 2006 , 2007 , 2008 , 2009 , 200a , 2028 , 2029 , 202f , 205f , 3000.

12
I4V

Mit REGEX können Sie die Leerzeichen in einer Zeichenfolge entfernen.

Der folgende Namespace ist obligatorisch.

using System.Text.RegularExpressions;

Syntax:

Regex.Replace(text, @"\s", "")
1
pramod

Der schnellste und allgemeinste Weg, dies zu tun (Zeilenabschlusszeichen, Registerkarten werden ebenfalls verarbeitet). Regex-leistungsfähige Einrichtungen sind zur Lösung dieses Problems nicht wirklich erforderlich, aber Regex kann die Leistung verringern.

                       new string
                           (stringToRemoveWhiteSpaces
                                .Where
                                (
                                    c => !char.IsWhiteSpace(c)
                                )
                                .ToArray<char>()
                           )

OR

                       new string
                           (stringToReplaceWhiteSpacesWithSpace
                                .Select
                                (
                                    c => char.IsWhiteSpace(c) ? ' ' : c
                                )
                                .ToArray<char>()
                           )
1
CSharpCoder