我想修剪一串字符串的空白区域。我使用了以下代码,但它似乎不起作用。谁能解释为什么?
result.ForEach(f => f = f.Trim());
答案 0 :(得分:10)
这不起作用,因为您正在为局部变量分配新的字符串引用。这可能就是你要找的东西:
result = result.Select(f => f.Trim()).ToList();
答案 1 :(得分:2)
您正在lambda范围内重新分配参数变量。这是一个崩溃的形式:
foreach(string value in myList)
{
Lambda(value);
}
void Lambda(string input)
{
input = input.Trim();
}
最简单的方法可能是使用投影:
myList = myList.Select(str => str.Trim()).ToList();
答案 2 :(得分:1)
foreach
不会授予您对底层集合的写入权限,它只会遍历它,这意味着您的更改不会存储回集合中。
你可以做两件事:
制作新藏品
var newResult = result.Select(f => f.Trim()).ToList();
使用普通的for循环并更改原始集合
for (int index = 0; index < result.Count; index++)
result[index] = result[index].Trim();