用\\替换\不适用于特定变量

问题描述 投票:5回答:1

我正在尝试将\替换为\\,并且它适用于除我需要使用的特定变量以外的所有内容。引发错误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"
    }
  ]
}

以下是显示例外情况的屏幕截图:Screenshot of code

c# backslash
1个回答
0
投票

config.json =>当您将路径放入json中时,双斜杠将减少您读取应用程序的麻烦。

{
  "WebsiteConfigList": [
    {
      "Name": "test",
      "Directory": "C:\\test"
    }
  ]
}

在您的函数中,您可以反序列化到您的WebsiteConfig类,并且您不需要检查正确的路径,因为这是记录器应用程序将从json文件加载文件夹路径的方式。

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;
    var path = Path.Combine(dir, "Backedup_" + i.ToString() + ".txt");
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.