从列表中删除所有空格C#

时间:2017-04-04 19:28:04

标签: c# arrays list

我正在读取文本文件中的所有行到名为“masterToken”的列表,我正在尝试删除列表中的所有空格(文本文件中的所有空格)。 masterToken = masterToken.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();是我目前正在尝试使用的,它不起作用。

masterToken = masterToken.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();有什么问题和/或是否有更好的方式来实现我的目标?

由于

public static void Lex()
{        
  List<string> masterToken = File.ReadAllLines("C:\\Users\\Theo\\Documents\\Visual Studio 2017\\Projects\\Interpreter\\test.txt").ToList();

  foreach (var item in masterToken)
  {
    Console.Write(item.ToString());
  }

  masterToken = masterToken.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();

  Console.WriteLine("");

  foreach (var item in masterToken)
  {
    Console.Write(item.ToString());
  }

  Console.ReadLine();
}

3 个答案:

答案 0 :(得分:5)

我建议你使用Regex.Replace用空字符串替换每个空格\s+序列。使用此方法生成新字符串并将结果保存到列表中:

masterToken = masterToken.Select(t => Regex.Replace(t, @"\s+", "")).ToList();

请注意,如果您只想删除前导和尾随空格,那么最好使用Trim()

masterToken = masterToken.Select(t => t.Trim()).ToList();

请记住,TrimReplace都不会修改原始字符串 - 所有这些方法都会返回新的字符串实例。

答案 1 :(得分:3)

替换此行:

masterToken = masterToken.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();

由此:

masterToken.ForEach(s => s = s.Replace(" ",""));

答案 2 :(得分:1)

尝试正则表达式

Regex.Replace(item,@"\s+","");