2016-09-30 12 views
1

を超えた場合にのみ、私はこの文字列をしました:文字列からホワイトスペースを削除し、特定のサイズ

Corso Vittorio Emanuele II 9   20122   Milano 

この文字列は、この形式で当初:

Corso Vittorio Emanuele II 9 
     20122 
     Milano 

ので、私はAを使用してNewLineを削除正規表現の式:

var stringWithoutNewLine = Regex.Replace(text, "\t|\n|\r", string.Empty).Trim(); 

は今、私はこの方法で空白を削除しようとした:

return Regex.Replace(stringWithoutNewLine, @"\s+", string.Empty); 

が、私はこの結果を得る原因それは、期待どおりに動作していない:

CorsoVittorioEmanueleII920122Milano 

は次のようになります。

Corso Vittorio Emanuele II 9 20122 Milano 
+0

文字列内の空白+改行のみを削除しようとしていますか? – confusedandamused

+0

空の文字列ではなく1つのスペースに置き換えます。 – juharr

+3

すべての空白を 'String.Empty'に置き換えていますが、この結果が期待されます。' string.Empty'を '" ''に置き換えてください:p – Kilazur

答えて

2

@"\s+"から@"\s{2,}"にあなたの正規表現を変更します。それは、2から(ある種の)無限の数に繰り返される空白を削除します。 Juharrが述べたように続いて、スペースで置き換えます

Regex.Replace(yourString, @"\s{2,}", " "); 
+0

このヒントをありがとう! – AgainMe

+0

それは問題ではありません。問題は、すべての空白がスペース文字ではなく空の文字列に置き換えられることです。 – juharr

+0

@juharr私も '' "'で試しましたが、 'string.empty'の代わりに状況は同じです。 – AgainMe

1

この

Console.WriteLine(Regex.Replace(stringWithoutNewLine, @"\s+", " ")); 
2

を試してみて、あなたが本当にこのために正規表現を使用する必要がありますか?なぜこのような何か?

var splitString = text.Split(new char[0],StringSplitOptions.RemoveEmptyEntries); 

var stringWithoutExtraSpaces = string.Join(" ",splitString); 
+1

'IndexOutOfRangeException'を避けるために空の文字列(または' splitString'の長さがゼロ)をチェックする必要があります。また 'string.Join'を使用している可能性があります。 – juharr

+0

入力いただきありがとうございます、私はそれを考えていませんでした。今、私の答えを改める。 –

関連する問題