正在删除字符串的转义符



我在Escape字符方面有点问题。Escape字符串是我从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;
}
}

我试过发短信。替换(@"\r\n"(和if语句,但我似乎无法将它们从字符串中删除

任何想法都将受到的赞赏

如果在字符串之前添加@符号,则表示您指定需要一个字符串,而不必转义任何字符。

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

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

但如果在nr之前添加@,而不是转义序列Windows新行,则会得到字符串"nr"

因此,这将导致删除所有出现的字符串"nr"。而不是你想要的NewLines:

text.Replace(@"rn")

要修复此问题,需要使用:

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

您也可以使用Environment.NewLine而不是rn,因为Environment知道您当前所在的操作系统,并根据该操作系统更改替换的字符。

最新更新