我正在读取文本文件中的所有行到名为“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();
}
答案 0 :(得分:5)
我建议你使用Regex.Replace
用空字符串替换每个空格\s+
序列。使用此方法生成新字符串并将结果保存到列表中:
masterToken = masterToken.Select(t => Regex.Replace(t, @"\s+", "")).ToList();
请注意,如果您只想删除前导和尾随空格,那么最好使用Trim()
:
masterToken = masterToken.Select(t => t.Trim()).ToList();
请记住,Trim
和Replace
都不会修改原始字符串 - 所有这些方法都会返回新的字符串实例。
答案 1 :(得分:3)
替换此行:
masterToken = masterToken.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
由此:
masterToken.ForEach(s => s = s.Replace(" ",""));
答案 2 :(得分:1)
尝试正则表达式
Regex.Replace(item,@"\s+","");