C# 删除字符串的转义字符
我对转义字符有点问题,转义字符是我从txt文件中读取的字符串, 它们会在我的程序中导致错误,需要删除它们,但我似乎无法过滤掉它们C# 删除字符串的转义字符,c#,string,escaping,C#,String,Escaping,我对转义字符有点问题,转义字符是我从txt文件中读取的字符串, 它们会在我的程序中导致错误,需要删除它们,但我似乎无法过滤掉它们 public static List<string> loadData(string type) { List<string> dataList = new List<string>(); try { string path = Path.Combi
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;
}
}
公共静态列表加载数据(字符串类型)
{
List dataList=新列表();
尝试
{
字符串path=path.Combine(path.GetDirectoryName(Assembly.getExecutionGassembly().Location),“Data”);
string text=File.ReadAllText(路径+类型);
string[]dataArray=text.Split(',');
foreach(数据数组中的var数据)
{
字符串dataUnescaped=Regex.Unescape(数据);
如果(!string.IsNullOrEmpty(dataUnescaped)和(!dataUnescaped.Contains(@“\r”)| |(!dataUnescaped.Contains(@“\n”))
{
dataList.Add(数据);
}
}
返回数据列表;
}
捕获(例外e)
{
控制台写入线(e);
返回数据列表;
}
}
我尝试了text.Replace(@“\r\n”)
还有if语句,但我似乎无法从字符串中删除它们
如果您在字符串之前添加
@
符号,这意味着您无需转义任何字符即可指定想要的字符串,则任何想法都将受到欢迎
因此,如果您想要一个没有@
的路径,则需要执行以下操作:
string s=“c:\\myfolder\\myfile.txt”
但是如果在转义序列Windows新行的
\n\r
前面添加@
,则会得到字符串“\n\r”
因此,这将导致删除所有出现的字符串“\n\r”
。而不是像您希望的那样换行:
text.Replace(@“\r\n”)
要修复您需要使用的问题:
text=text.Replace(Environment.NewLine,string.Empty);
您也可以使用
Environment.NewLine
,而不是\r
和\n
,因为Environment知道您当前在哪个操作系统上,并根据该操作系统更改替换的字符。删除@,因为@意味着您希望\是一个字符meanign,而不是与n组合并搜索换行符,所以它将搜索字符串中\n的任何外观。这可能就是为什么替换函数和ifs没有达到您期望的效果。