Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 将Regex.Replace()替换为模式的变量_C#_Regex_String - Fatal编程技术网

C# 将Regex.Replace()替换为模式的变量

C# 将Regex.Replace()替换为模式的变量,c#,regex,string,C#,Regex,String,我有以下代码: a += Regex.Replace(listBox1.Items[i].ToString(), " \\(AB\\)|\\(BC\\)|\\(CD\\)", "").Replace(" ", ""); 它将“Hallo(AB)(C)”转换为“Hallo(C)”(效果完美) 现在我想用一个变量替换模式: string patt=" \\(AB\\)|\\(BC\\)|\\(CD\\)"; a += Regex.Replace(listBox1.Items[i].ToString

我有以下代码:

a += Regex.Replace(listBox1.Items[i].ToString(), " \\(AB\\)|\\(BC\\)|\\(CD\\)", "").Replace(" ", "");
它将“Hallo(AB)(C)”转换为“Hallo(C)”(效果完美)

现在我想用一个变量替换模式:

string patt=" \\(AB\\)|\\(BC\\)|\\(CD\\)";
a += Regex.Replace(listBox1.Items[i].ToString(), @patt, "").Replace(" ", "");
而且它不再工作了。
我一直在寻找解决办法,但什么也没找到。我做错了什么?

我相信
@
放错地方了,也许你的意思是:

string patt= @" \\(AB\\)|\\(BC\\)|\\(CD\\)";
a += Regex.Replace(listBox1.Items[i].ToString(), patt, "").Replace(" ", "");

请注意,原始语句中没有@,在第二个语句中的字符串前面添加@将改变该字符串中反斜杠的含义。您是否尝试过完全不使用@?请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。@LasseV.Karlsen注意,第二个代码段中的@不是创建逐字字符串,因为
patt
是一个变量,而不是字符串文字;所以它不会改变该字符串中反斜杠的含义。@j0h4nn3s到底什么不起作用?您发布的代码工作正常,没有显示任何问题。我正在将模式保存在xml文件中,并使用
string patt=reader.ReadElementContentAsString()
读取它。我认为这与
string patt=“”\(AB\)\124;\(BC\)\124\(CD\)相同“
但你是对的,在这种情况下,它是有效的。但在添加xml ReaderNo之后,它就不起作用了。通过创建逐字记录字符串,您可以更改模式的含义。反斜杠在非逐字字符串中转义,以转义
。只需尝试从变量名中删除
@
。@Selman22它是否为逐字标识符并不重要。