【发布时间】:2019-12-17 10:21:30
【问题描述】:
我正在尝试用\\ 替换\,它适用于除我需要处理的特定变量之外的所有内容。抛出错误Illegal characters in path. 可能是因为它认为 \t 是一个字符,它是制表符,因此不允许在路径中
使用 Newtonsoft.Json 从 json 文件将变量加载到类中
public class WebsiteConfig
{
public string Name { get; set; }
public string Directory { get; set; }
}
我试过了
var escapedir = Regex.Replace(Directory, @"\\", @"\"); 以及我可以形成 var escapedir = Directory.Replace("\", "\\"); 的任何可能方式。
尝试Regex.Replace("C:\test", @"\", @"\\");(C:\test 与 Directory 中的完全相同)运行良好,然后在 foreach 中我尝试将 Directory 与文件名结合起来。
当前代码的“转储”:
var json = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
_config = JsonConvert.DeserializeObject<Config>(json);
foreach(WebsiteConfig website in _config.WebsiteConfigList)
{
for (int i = 0; i <= 9; i++)
{
string dir = website.Directory;
string escapedir = Regex.Replace(dir, @"\\", @"\\\\");
var path = Path.Combine(escapedir, "Backedup_" + i.ToString() + ".txt");
}
}
还有 config.json:
{
"WebsiteConfigList": [
{
"Name": "test",
"Directory": "C:\test"
}
]
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
@SamuelLiew 请重新打开。找到了答案,我相信它是主题。进行了研究。示例已发布。它是可复制的。
-
这不是题外话。已经编辑过了,这是一个可以重现的真实问题,并且已经找到了答案。请重新打开,以便日后他人解答和查找。
-
您的 JSON 文件制作不当。
\t是一个 JSON 转义序列。 -
是的。 anwser 找到了解决方法。