C# 正则表达式替换客户端定义的特殊字符

C# 正则表达式替换客户端定义的特殊字符,c#,regex,C#,Regex,我需要一个c#函数,它将替换客户端从字符串示例中定制的所有特殊字符 string value1 = @"‹¥ó׬¶ÝÆ"; string input1 = @"Thi¥s is\123a strÆing"; string output1 = Regex.Replace(input1, value1, ""); 我想得到这样的结果:output1=this是一个str\123a-ing为什么需要正则表达式?这更高效、简洁,也更具可读性: string result = string.Co

我需要一个c#函数,它将替换客户端从字符串示例中定制的所有特殊字符

 string value1 = @"‹¥ó׬¶ÝÆ";
 string input1 = @"Thi¥s is\123a strÆing";
 string output1 = Regex.Replace(input1, value1, "");

我想得到这样的结果:
output1=this是一个str\123a-ing

为什么需要正则表达式?这更高效、简洁,也更具可读性:

string result = string.Concat(input1.Except(value1));
如果您不想删除它们,而是用不同的
字符串替换它们,您仍然可以使用类似(但效率不高)的方法:

string replacement = "[foo]";
var newChars = input1.SelectMany(c => value1.Contains(c) ? replacement : c.ToString());
string result = string.Concat( newChars ); // Thi[foo]s is\123a str[foo]ing

你为什么需要正则表达式?这更高效、简洁,也更具可读性:

string result = string.Concat(input1.Except(value1));
如果您不想删除它们,而是用不同的
字符串替换它们,您仍然可以使用类似(但效率不高)的方法:

string replacement = "[foo]";
var newChars = input1.SelectMany(c => value1.Contains(c) ? replacement : c.ToString());
string result = string.Concat( newChars ); // Thi[foo]s is\123a str[foo]ing

有人要一个正则表达式

string value1 = @"^\-[]‹¥ó׬¶ÝÆ";
string input1 = @"T-^\hi¥s is\123a strÆing";

// Handles ]^-\ by escaping them
string value1b = Regex.Replace(value1, @"([\]\^\-\\])", @"\$1");

// Creates a [...] regex and uses it
string input1b = Regex.Replace(input1, "[" + value1b + "]", " ");
基本思想是使用
[…]
正则表达式。但首先,您必须转义
[…]
中具有特殊含义的一些字符。它们应该是
]^-\
注意,您不需要逃避
[

请注意,此解决方案与非BMP unicode字符(填充两个
char
的字符)不兼容。

与它们兼容的解决方案更为复杂,但对于正常使用来说,这应该不是问题。

有人要求使用正则表达式吗

string value1 = @"^\-[]‹¥ó׬¶ÝÆ";
string input1 = @"T-^\hi¥s is\123a strÆing";

// Handles ]^-\ by escaping them
string value1b = Regex.Replace(value1, @"([\]\^\-\\])", @"\$1");

// Creates a [...] regex and uses it
string input1b = Regex.Replace(input1, "[" + value1b + "]", " ");
基本思想是使用
[…]
正则表达式。但首先必须转义
[…]
中具有特殊含义的一些字符。它们应该是
]^-\
注意,不需要转义
[

请注意,此解决方案与非BMP unicode字符(填充两个
char
的字符)不兼容。

与它们兼容的解决方案更复杂,但对于正常使用来说,这应该不是问题。

你说的“特殊字符”是什么意思?所有非ASCII字符?你说的“特殊字符”是什么意思?所有非ASCII字符?@fubo:但他也使用
作为替换。对于替换,只需要
Join
Split
而不是
Concat
除了
string.Join(替换,input1.Split(value1.ToArray(),StringSplitOptions.None))
@fubo:我的意思是,我提供了一种类似的方法,这种方法效率不高,但允许用任何字符串替换所有字符。@fubo:但他也使用
“”
作为替换。对于替换,只需要
Join
Split
而不是
Concat
除了
string.Join(替换,input1.Split(value1.ToArray(),StringSplitOptions.None))
@fubo:我的观点是,我提供了一种类似的方法,这种方法效率不高,但允许用任何字符串替换所有字符。为什么不直接使用
正则表达式。Escape
?@juharr不会对某些字符进行转义,比如
-
]
。它应该用于文本“外部”a
[]
谢谢非常匹配xanatos先生,这个建议帮助我:)为什么不直接使用
Regex.Escape
?@juharr不会转义一些字符,比如
-
]
。它应该用于文本“外部”a
[]
非常感谢与xanatos先生的匹配,此建议帮助我:)