2010-12-15 10 views
7

Beim Importieren von Daten aus einer Einfachdatei habe ich festgestellt, dass einige der Zeilen eingebettete Leerzeichen enthalten (Hex: A0).Entfernen eines bestimmten Zeichens aus einer Zeichenfolge basierend auf dem Hexadezimalwert

Ich möchte diese entfernen, aber der Standard string.replace scheint nicht zu funktionieren und hatte erwogen, Regex zu verwenden, um die Zeichenfolge zu ersetzen, würde aber nicht wissen, was die Regex suchen würde, um sie zu entfernen.

Anstatt die ganze Zeichenfolge in Hex umzuwandeln und das zu untersuchen, gibt es einen besseren Weg?

+2

Ersetzen sollte damit umgehen, können Sie den Code zeigen (das fehlgeschlagen ist)? –

Antwort

19

Warum funktioniert string.Replace nicht?

stringVar.Replace((char)0xA0, ' '); 
+0

Das obige ändert sich auf leer, oder? Wie entfernen Sie es vollständig? Ich habe versucht "" und "", aber anscheinend, wenn Sie einen Char auf der linken Seite des Ersatzes haben, müssen Sie einen Char auf der rechten Seite haben. – NealWalters

+0

@NealWaters: Sie müssen die String-Version von 'Replace' mit' null' als zweiten Parameter verwenden. –

12
Regex.Replace(input, "\xA0", String.Empty); 

Dies sollte es tun.

3

Würde dies für Sie arbeiten?

var myNewString = myCurrentString.Replace("\n", string.Empty); 
myNewString = myNewString.Replace("\r", string.Empty); 

"\n" ASCII Zeilenvor ist "\r" ist zurück.

+1

Keines davon ist das nicht brechende Leerzeichen A0 (160). – KeithS

+0

Ja, Sie haben Recht, ich habe die Frage falsch verstanden. Es tut uns leid. Sollte ich meine Antwort löschen oder einfach hier lassen (ich bin neu dazu ...)? –

+0

Sie sollten Ihre Antwort korrigieren. Das ist das Beste, was zu tun ist. – jlafay

5

string.Replace funktioniert. Ohne Verwendung der RegEx:

stringVar = stringVar.Replace("\xA0", string.Empty); 
Verwandte Themen