Czy istnieje sposób na usunięcie białych znaków z ciągu?


Czy istnieje funkcja składowa klasy
string
(lub cokolwiek), która usuwa wszystkie białe znaki z ciągu? Coś w rodzaju
str.strip ()
w Pythonie?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz po prostu zrobić:
myString = myString.Replace(" ", "");

Jeśli chcesz usunąć

wszystko

spacje, możesz użyć Linq, nawet jeśli składnia nie jest zbyt atrakcyjna dla tego przypadku użycia:
myString = new string(myString.Where(c => !char.IsWhiteSpace(c)).ToArray());
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

metoda
http://msdn.microsoft.com/en-u ... .aspx
String.Trim usuwa końcowe i wiodące spacje. To jest funkcjonalny odpowiednik metody paskowej w Pythonie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

LINQ tutaj wydaje się przesadą, aby przekonwertować ciąg na listę, przefiltrować listę, a następnie ponownie zmienić ją w ciąg. Aby usunąć wszystkie spacje, wybrałbym wyrażenie regularne.
Regex.Replace (s, @ "\ s", "")
. Jest to powszechny idiom i prawdopodobnie został zoptymalizowany.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz usunąć spacje, które poprzedzają linię lub na jej końcu, możesz przyjrzeć się TrimStart (), TrimEnd () i Trim ().
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz wymienić

wszystko

białe znaki w wierszu (nie tylko początkowe i końcowe białe znaki) w oparciu o definicję .NET określającą, czym są białe znaki, możesz użyć dość prostego zapytania LINQ, aby to zadziałało.
string whitespaceStripped = new string((from char c in someString
where !char.IsWhiteSpace(c)
select c).ToArray());
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak, przycinanie.
String a = "blabla ";
var b = a.Trim();// or TrimEnd or TrimStart
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak,
String.Trim()
http://msdn.microsoft.com/en-u ... .aspx
.
var result = " a b ".Trim();

daje
„a b”
na
result
. Domyślnie wszystkie białe spacje są przycinane. Jeśli chcesz tylko usunąć przestrzeń, którą musisz wejść
var result = " a b ".Trim(' ');

Jeśli chcesz usunąć

wszystko

spacji w ciągu, możesz użyć
string.Replace()
http://msdn.microsoft.com/en-u ... .aspx
.
var result = " a b ".Replace(" ", "");

daje
„ab”
na
wynik
. Ale to nie jest równoważne z
str.strip ()
w Pythonie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Niewiele wiem o Pythonie ...
Jeśli
str.strip ()
po prostu usuwa białe znaki na początku i na końcu, możesz użyć
str = str.Trim ()
.NET ... w przeciwnym razie możesz po prostu
str = str.Replace ("", "")
, aby usunąć wszystkie spacje.
JEŚLI usuwa wszystkie spacje, a następnie używa
str = (from c in str where !char.IsWhiteSpace(c) select c).ToString()
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jest wiele różnych sposobów, niektóre są szybsze niż inne:
public static string StripTabsAndNewlines(this string s) {//string builder (fast)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++) {
if ( ! Char.IsWhiteSpace(s[i])) {
sb.Append();
}
}
return sb.tostring();//linq (faster ?)
return new string(input.ToCharArray().Where(c => !Char.IsWhiteSpace(c)).ToArray());//regex (slow)
return Regex.Replace(s, @"\s+", "")}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

mógłbyś użyć
StringVariable.Replace(" ","")
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jestem zaskoczony, że nikt o tym nie wspomniał:
String.Join("", " all manner\tof\ndifferent\twhite spaces!\n".Split())
string.Split
domyślnie dzieli się na znaki, które są
char.IsWhiteSpace
, więc jest to bardzo podobne rozwiązanie filtrujące te znaki za pomocą bezpośredniego użycia
char. IsWhiteSpace
i jest to jednowierszowy, który działa również w środowiskach poprzedzających LINQ.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przestrzenie striptizowe? Usunąć spacje? Dlaczego to ma znaczenie? Ma to znaczenie tylko wtedy, gdy szukamy istniejącej implementacji, ale nie zapominajmy, jak fajnie

do programu

rozwiązanie, zamiast wyszukiwania MSDN (nudne).
Powinieneś być w stanie usunąć dowolne znaki z dowolnego ciągu za pomocą 1 z 2 poniższych funkcji.
Możesz usunąć takie znaki
static string RemoveCharsFromString(string textChars, string removeChars)
{
string tempResult = "";
foreach (char c in textChars)
{
if (!removeChars.Contains(c))
{
tempResult = tempResult + c;
}
}
return tempResu<
}

lub możesz zastosować zestaw znaków (że tak powiem) w ten sposób
static string EnforceCharLimitation(string textChars, string allowChars)
{
string tempResult = "";
foreach (char c in textChars)
{
if (allowChars.Contains(c))
{
tempResult = tempResult + c;
}
} return tempResu<
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się