删除字符串的转义字符

Removing Escape Characters for a string

我对转义字符有点问题是我从 txt 文件中读取的字符串, 它们稍后会在我的程序中引起错误,它们需要被删除,但我似乎无法过滤掉它们

  public static List<string> loadData(string type)
    {
        List<string> dataList = new List<string>();
        try
        {
            string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Data");
            string text = File.ReadAllText(path + type);


            string[] dataArray = text.Split(',');


            foreach (var data in dataArray)
            {
                string dataUnescaped = Regex.Unescape(data);
                if (!string.IsNullOrEmpty(dataUnescaped) && (!dataUnescaped.Contains(@"\r") || (!dataUnescaped.Contains(@"\n"))))
                {
                    dataList.Add(data);
                }
            }
            return dataList;
        }
        catch(Exception e)
        {
            Console.WriteLine(e);
            return dataList;
        }
    }

我试过了text.Replace(@"\r\n") 和一个 if 语句,但我似乎无法从我的字符串中删除它们

任何想法将不胜感激

如果您在字符串前添加 @ 符号,这意味着您指定了您想要的字符串而无需转义任何字符。

所以如果你想要一条没有 @ 的路径,你需要这样做:

string s = "c:\myfolder\myfile.txt"

但是如果你在你的 \n\r 之前添加 @ 不是转义序列 Windows 新行你会得到字符串 "\n\r".

所以这将导致您删除所有出现的 字符串 "\n\r"。而不是你想要的换行符:

text.Replace(@"\r\n")

要解决此问题,您需要使用:

text = text.Replace(Environment.NewLine, string.Empty);

您也可以使用 Environment.NewLine 代替 \r\n,因为环境知道您当前所在的 OS 并根据该字符更改替换字符.