删除字符串的转义字符
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 并根据该字符更改替换字符.
我对转义字符有点问题是我从 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 并根据该字符更改替换字符.