Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除字符串的转义字符_C#_String_Escaping - Fatal编程技术网

C# 删除字符串的转义字符

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

我对转义字符有点问题,转义字符是我从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;
        }
    }
公共静态列表加载数据(字符串类型)
{
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没有达到您期望的效果。