Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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 - Fatal编程技术网

C# 字符串中无法识别的转义序列在字符串的替换方法中引发错误

C# 字符串中无法识别的转义序列在字符串的替换方法中引发错误,c#,string,C#,String,我有一个字符串名,它的-是一个特殊字符,必须用\-替换 name = name .Contains('-') ? name .Replace('-', '\-') : name; replace方法引发无法识别的转义序列错误 当我试着这么做的时候 name = name .Contains('-') ? name .Replace('-', '\\-') : name; 字符文字中的字符太多 名称的一些示例是: abc-123-45g xyz-1-2-3 ref-124 替换字符的最佳方

我有一个字符串名,它的
-
是一个特殊字符,必须用
\-
替换

 name = name .Contains('-') ? name .Replace('-', '\-') : name;
replace方法引发无法识别的转义序列错误

当我试着这么做的时候

name = name .Contains('-') ? name .Replace('-', '\\-') : name;
字符文字中的字符太多

名称的一些示例是:

abc-123-45g
xyz-1-2-3
ref-124

替换字符的最佳方法是什么?

\-
不是字符。这是一根绳子

因此,您应该使用重载来获取字符串而不是字符:

name = name.Contains('-') ? name.Replace("-", "\\-") : name;
另外,您实际上不需要
包含
条件。因此,你最终会:

name = name.Replace("-", "\\-");

使用
而不是
?您不需要使用方法
。包含(…)
,只需使用
。替换(…)
,正如@freefaller所回避的,C中的撇号表示单个字符,而引号表示字符串-这就是为什么”\-”“是的。这里更好地解释一下,我认为
包含
条件是为了避免在没有替换字符的情况下创建/分配新的
字符串
。我使用VS2017诊断工具/内存使用情况运行了一个测试,可以确认没有新的字符串分配(如果没有替换字符)