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