どのように文字列の空白をトリミングするための最もエレガントな方法は何ですか" a<many spaces>b c "
に"a b c"
。そのため、繰り返し空白は1つのスペースに縮小されます。
あなたが使用することができますRegex
このため:
Regex.Replace(my_string, @"\s+", " ").Trim();
単にテーブルの上に持っているための正規表現なしの解決策:
char[] delimiters = new char[] { ' '}; // or null for 'all whitespace'
string[] parts = txt.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
string result = String.Join(" ", parts);
\s
これは空白(U + 0020)文字のみを削除し、他の文字は空白として分類されません。これはQの基準を満たしていますが、実際にはタブなどにも適用する必要があると私は思います。 - Richarddelimiters = null
に対応\s
- Henk HoltermanTrim()
しかし、それをすべて行うために正規表現を使用します。 (あまり気にしないで、数時間前の今日の200営業担当者を上限にしました...) - Lucero
Regex.Replace(my_string, @"^\s+|\s+$|(\s)\s+", "$1");
.Trim()
非常に簡潔で、保守が簡単です。 (私は投票していません - このバージョンよろしくタイトなループのように、本当に速いのであれば - Izkata
使用Trim
文字列の最初と最後から空白を削除するメソッドと、複数のスペースを減らすための正規表現
s = Regex.Replace(s.Trim(), @"\s{2,}", " ");
あなたはすることができます
Regex.Replace(str, "\\s+", " ").Trim()
Regex rgx = new Regex("\\s+");
string str;
str=Console.ReadLine();
str=rgx.Replace(str," ");
str = str.Trim();
Console.WriteLine(str);
正規表現を使う:
"( ){2,}" //Matches any sequence of spaces, with at least 2 of them
そしてそれを使って全てのマッチを ""に置き換えます。
私はC#でそれをしていません、そして、私はドキュメンテーションが何を言うかについて理解するためにより多くの時間を必要とします、それであなたは自分でそれを見つけなければなりません..すみません。
正規表現を使う
String test = " a b c ";
test = Regex.Replace(test,@"\s{2,}"," ");
test = test.Trim();
このコードでは、2つ以上のスペースを1つのスペースに置き換えます。Regex
その後、最初と最後に削除します。
\s{2,}
または\s\s+
あるいは\s+
任意の数の空白をスペースに置き換えたい場合(\s
タブなどの文字を含むすべての空白文字と一致します。結果は異なります。 - Lucero
Regex.Replace(str, "[\s]+"," ")
次に、Trimを呼び出して、前後の空白を取り除きます。
.Trim()
そのために。 :) - naveen