我正在研究一个程序,它根据列的标题读取文件并保存它们.其中一些标题有文件名的非法字符,所以我写了这段代码来处理这些问题.
string headerfile = saveDir + "\\" + tVS.Nodes[r].Text.Replace("\"", "").Replace
("/","").Replace(":"," -").Replace(">","(Greater Than)") + ".csv";
Run Code Online (Sandbox Code Playgroud)
在没有4的情况下有没有更好的方法.Replace()呢?或者是否有某种内置的非法角色去除器,我不知道?
谢谢!
编辑:它不需要用任何特定的字符替换字符.一个空白就足够了.
Ry-*_*Ry- 35
正则表达式通常是一种很好的方法,但是当你用不同的东西替换每个角色时却不是这样.你可以考虑用同样的东西替换它们,然后使用System.IO.Path.GetInvalidFileNameChars().
string filename = tVS.Nodes[r].Text;
foreach(char c in System.IO.Path.GetInvalidFileNameChars()) {
filename = filename.Replace(c, '_');
}
Run Code Online (Sandbox Code Playgroud)
System.IO.Path.GetInvalidFileNameChars() 拥有所有无效字符.
这是一个示例方法:
public static string SanitizeFileName(string fileName, char replacementChar = '_')
{
var blackList = new HashSet<char>(System.IO.Path.GetInvalidFileNameChars());
var output = fileName.ToCharArray();
for (int i = 0, ln = output.Length; i < ln; i++)
{
if (blackList.Contains(output[i]))
{
output[i] = replacementChar;
}
}
return new String(output);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32740 次 |
| 最近记录: |