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

时间:2015-03-20 12:01:34

标签: c# regex

我需要一个c#函数,它将替换客户端从字符串Example

中定制的所有特殊字符
 string value1 = @"‹¥ó׬¶ÝÆ";
 string input1 = @"Thi¥s is\123a strÆing";
 string output1 = Regex.Replace(input1, value1, "");

我希望得到这样的结果:output1 =Thi s is\123a str ing

2 个答案:

答案 0 :(得分:4)

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

string result = string.Concat(input1.Except(value1));

如果您不想删除但是使用其他string替换它们,您仍然可以使用类似(但效率不高)的方法:

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

答案 1 :(得分:0)

有人要求正则表达式吗?

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的字符)不兼容 与它们兼容的解决方案更复杂,但对于正常使用它不应该是一个问题。

相关问题