繁体   English   中英

替换列表中每个字符串的空间

[英]replace space for every string in the list

我试图用下划线重命名每个文件的空白空间:

DirectoryInfo dir = new DirectoryInfo(@"Q:\Audio");
var files = (from f in dir.GetFiles() select f.FullName);
files.ToList().ConvertAll( s => s.Replace( " ", "_") );

但是它不起作用,我尝试使用一个foreach循环,它抱怨“由于它是一个“ foreach迭代变量”,因此无法分配给“ element””

我该如何处理?

ConvertAll返回一个新的List

var renamedFiles = files.ToList().ConvertAll(s => s.Replace(" ", "_"));

您可以使用以下代码块之一:

DirectoryInfo dir = new DirectoryInfo(@"C:\");
var files = (from f in dir.GetFiles() select f.FullName.Replace(" ", "_"));

要么:

DirectoryInfo dir = new DirectoryInfo(@"C:\");
var files = (from f in dir.GetFiles() select f.FullName);
var fileNames = (from fn in files select fn.Replace(" ", "_"));

要么:

DirectoryInfo dir = new DirectoryInfo(@"C:\");
var files = (from f in dir.GetFiles() select f.FullName);
var fileNames = files.Select(s => s.Replace(" ", "_"));

或(错误的主意):

DirectoryInfo dir = new DirectoryInfo(@"C:\");
var files = (from f in dir.GetFiles() select f.FullName);
var fileNames = files.ToList().ConvertAll(s => s.Replace(" ", "_"));

编辑1:但我建议使用选择功能,最好不要为IQueryable之类的延迟对象调用.ToList()方法。

您实际上需要重置变量files 更改最后一行以使用ConvertAll的输出重置files变量。

files = files.ToList().ConvertAll( s => s.Replace( " ", "_") );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM