C# 正则表达式替换客户端定义的特殊字符
我需要一个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
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先生的匹配,此建议帮助我:)