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

这样的事情应该可以解决问题:

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

您收到的错误很可能是因为您正在传递sortBox1给该Replace方法 - 它必须是 astring而不是List.

于 2012-12-16T04:33:40.067 回答
2

Replace方法适用于单个字符串,而不是字符串列表。您将遍历列表中的字符串:

for (int i = 0; i < sortBox1.Count; i++) {
  sortBox1[i] = Regex.Replace(sortBox1[i], @"\s+", " ").Trim();
}
于 2012-12-16T04:38:40.000 回答
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 回答