0

次のコードを使用して C# リスト内のすべての空白を圧縮しようとしていますが、コンパイルできません...Regex式全体の下に赤い「エラー」行が表示され、その理由がわかりません。誰か助けてくれませんか?

char[] delimiterChars = { ',', ':', '|', '\n' };
List<string> sortBox1 = new List<string>(textBox2.Text.Split(delimiterChars));

#region >> COMPRESS WHITESPACE
if (checkBox2.Checked)
{
    sortBox1 = Regex.Replace(sortBox1, @"\s+", " ").Trim();              
}
#endregion  
4

3 に答える 3

2

このReplaceメソッドは、文字列のリストではなく、単一の文字列に対して機能します。リスト内の文字列をループします。

for (int i = 0; i < sortBox1.Count; i++) {
  sortBox1[i] = Regex.Replace(sortBox1[i], @"\s+", " ").Trim();
}
于 2012-12-16T04:38:40.000 に答える
2

このような何かがうまくいくはずです:

if (checkBox2.Checked)
{
    sortBox1 = sortBox1.Select(s => Regex.Replace(s, @"\s+", " ").Trim()).ToList();             
}

sortBox1受け取っているエラーは、Replaceメソッドに渡しているstringことが原因である可能性が最も高いですList

于 2012-12-16T04:33:40.067 に答える
1

String.Trim 関数を使用できます

char[] delimiterChars = { ',', ':', '|', '\n' };
List<string> sortBox1 = new List<string>(checkBox2.Checked ? textBox2.Text.Split(delimiterChars).Select(s => s.Trim()) : textBox2.Text.Split(delimiterChars));
于 2012-12-16T04:37:31.903 に答える