gpt4 book ai didi

c# - 用\\替换\不适用于特定变量

转载 作者:行者123 更新时间:2023-12-04 15:28:49 26 4
gpt4 key购买 nike

我正在尝试更换 \\\它适用于除我需要处理的特定变量之外的所有内容。抛出错误 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 与目录中的完全相同)完美运行,然后在 foreach 中我试图将目录与文件名结合起来。

当前代码的“转储”:
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"
}
]
}

这是显示异常的屏幕截图:
Screenshot of code

最佳答案

问题确实源于 \t但它发生在反序列化过程中,而不是在 Path 中发生正如你可能相信的那样。有多种建议用转义的反斜杠替换反斜杠,但此时损坏已经造成:
C:\test变成了C: est (空格是制表符)。

根据您的要求,更改输入文件不是一种选择,因此您必须在反序列化之前进行转义。我能想到的最简单的方法是:
json = json.Replace(@"\", @"\\");
顺便说一句,虽然Regex.Replace很强大,string.Replace是足够的。

看起来您没有大型 JSON 文件,但如果有,请在 string.Replace 上阅读一些内容。在 large files .

关于c# - 用\\替换\不适用于特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59372100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com