2010-12-15 7 views
7

Podczas importowania danych z pliku płaskiego zauważyłem, że niektóre linie zawierają osadzone spacje nierozdzielające (Hex: A0).Usunięcie określonego znaku z łańcucha na podstawie wartości szesnastkowej

Chciałbym usunąć te, ale standardowy string.replace nie działa i rozważał użycie regex do zastąpienia ciągu, ale nie wiedziałby, co regex będzie szukał, aby go usunąć.

Zamiast konwertować cały ciąg na szesnastkowy i sprawdzać, czy istnieje lepszy sposób?

+2

Zastąpienie powinno poradzić sobie z tym, czy możesz pokazać kod (który się nie powiódł)? –

Odpowiedz

19

Dlaczego string.Replace nie działa?

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

Powyższe zmiany są puste, prawda? Jak całkowicie go usunąć? Próbowałem "" i "", ale najwyraźniej jeśli masz znak po lewej stronie zastąpienia, musisz mieć znak po prawej stronie. – NealWalters

+0

@NealWaters: Musisz użyć ciągu znaków 'Replace' z' null' jako drugim parametrem. –

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

To powinno wystarczyć.

3

Czy ta praca jest dla Ciebie?

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

"\n" jest ASCII Linefeed "\r" to Return.

+1

Żadne z nich nie jest łamaniem znaku spacji A0 (160). – KeithS

+0

Tak, masz rację, źle zrozumiałem pytanie. Przepraszam. Czy powinienem usunąć swoją odpowiedź, czy też zostawić ją tutaj (jestem nowy w tym ...)? –

+0

Powinieneś poprawić swoją odpowiedź. To najlepsza rzecz do zrobienia. – jlafay

5

string.Replace działa. Bez użycia RegEx:

stringVar = stringVar.Replace("\xA0", string.Empty); 
Powiązane problemy