2011-01-25 6 views
3

は常に感謝し、すべてのどのようにスペースを削除するには

こんにちはすべて、

String test = "John, Jane"; 

test.Replace(" ",""); 

String[] toList = test.Split(',', ' ', ';'); 

はどのようにあなただけの文字列にスペースまたは任意のスペース除去するであろう、という欠場、不変部分を手に入れました潜在的に現れますか?

3つのアイテムが配列にあり、2つではないのはなぜですか? - 文字列の不変なので、string.Replace戻り値がある

test = test.Replace(" ", ""); 

注意をだけはそれを行うことはありませんstring.Replaceを呼んでいること:ただの空の文字列に置き換える、任意のスペースを削除するには

答えて

13

関連する置換文字を含む新しい文字列への参照。あなたが任意の空白を削除したい場合は、regexをする必要があります

test=test.Replace(" ",""); 

+0

助けを借りていただきありがとうございました。 – Rod

+0

@rod:質問に表示されているコードの間違いを考えれば、まだ助けが必要ですか? –

5

それは同じくらい簡単です

using System.Text.RegularExpressions; 
Regex r=new Regex("\\s+"); 
test=r.Replace(test,""); 

日時:なぜ3つの項目があります配列で2ではなく?

あなたはによって両方コンマとスペース(スプリット引数1 + 2)を分割しているので、コンマとJohnJane間のスペースの両方がありますので、あなたが取得している:

["John", "", "Jane"] // (in JSON notation ;)) 
1

あなたがしたい場合あなただけの空白文字を削除したい場合は空白のすべてのタイプを削除するには、あなたがstring noWhiteSpace = Regex.Replace("John, Jane", @"\s", string.Empty);を使用することができ、string noSpace = "John, Jane".Replace(" ",string.Empty);

を使用するだけで、あなたの質問に2つ目の部分を見て、あなたの編集に追加:

あなたの配列には3つの項目があります。なぜなら、テスト文字列は分割する文字リストに含まれる各トークンで分割されるからです。あなたの文字列にはスペースとカンマの両方が含まれており、カンマで分割し、スペースで分割します。あなたは空白を削除した場合は、時分割するスペースを持っていないだろう、もちろん

String[] toList = test.Split(new char[] {',', ' ', ';'}, StringSplitOptions.RemoveEmptyEntries); 

:あなたは空のエントリーをしたくない場合は

は、次のように使用することができます。

0

だから、完全なソリューションは、このようになります:

String test = "John, Jane"; 

test = test.Replace(" ",""); 

String[] toList = test.Split(',', ';'); 

なぜ配列ではなく2の3つの項目はありますか? - 元の文字列が不変である1)あなたが新しい文字列を生成している、とあなたには、いくつかの変数に格納する必要がありReplace呼び出し:2つの理由から

。 2)次に、Splitを呼び出すときにセパレータの1つとしてスペース(' ')を使用していました。あなたはそれを必要としません(前の行のすべてのスペースを削除しています)。

関連する問題