foreach循环中的c#string.replace

par*_*dox 13 c# string foreach

不知怎的,我似乎无法在C#的foreach循环中获得字符串替换.我的代码如下:

foreach (string s in names)
{
    s.Replace("pdf", "txt");
}
Run Code Online (Sandbox Code Playgroud)

对于LINQ来说还是很新的,所以请原谅我,如果这听起来很业余;)

Jon*_*eet 32

你说你是在使用LINQ解决方案......这很简单:

var replacedNames = names.Select(x => x.Replace("pdf", "txt"));
Run Code Online (Sandbox Code Playgroud)

我们不知道它的类型names,但是如果你想要分配给它,你可能会使用ToArrayToList:

// If names is a List<T>
names = names.Select(x => x.Replace("pdf", "txt")).ToList();
// If names is an array
names = names.Select(x => x.Replace("pdf", "txt")).ToArray();
Run Code Online (Sandbox Code Playgroud)

您应该知道,您发布的代码目前根本没有使用LINQ ...


And*_*bel 23

C#中的字符串是不可变的(不会更改),因此s.Replace将返回一个新字符串.不幸的是,这意味着您无法使用foreach进行更新.如果names是一个数组,这应该工作:

for(int i = 0; i < names.Length; i++)
{
    names[i] = names[i].Replace("pdf", "txt");
}
Run Code Online (Sandbox Code Playgroud)

  • 它也适用于`List <string>`.只需用_Count_替换_Length_ (2认同)