如何用单个字符替换包括空格的许多特殊字符?
答案 0 :(得分:4)
除非它是一个复杂的替换操作,否则你可以使用Replace函数:
text = text.Replace("many special character", "a");
上面的代码会用单个字符“a”
替换序列“many special character”答案 1 :(得分:2)
我不确定你在问什么,但我猜它是这样的(see also on ideone.com):
var text = "Really????? That... is... AWESOME!!!";
Console.WriteLine(Regex.Replace(text, @"([\s\p{P}])\1+", "$1"));
// prints "Really? That. is. AWESOME!"
本质上,它使用正则表达式来匹配某些字符的连续序列,并将其替换为只出现一次所述字符。
以下是正则表达式的元素:
\s
是空白字符类\p{P}
是标点字符类[\s\p{P}]
是两个字符类的联合(...)
是一个创建反向引用的捕获组\1+
尝试匹配+
匹配的一个或多个(\1
)$1
代替\1
匹配答案 2 :(得分:0)
试试Regex.Replace
http://msdn.microsoft.com/en-us/library/aa332127(v=VS.71).aspx
答案 3 :(得分:0)
答案 4 :(得分:0)
您似乎想要用一个特殊字符替换任何特殊字符组合。如果您不想使用正则表达式,可以这样做:
char[] specialChars = new char[] { '\n', '\t', '\r', 'X' }; // newline, tab, carriage return and uppercase X for example
string myString = " hello\tworld!\t\tXTest";
// replace all special chars with space
foreach (char specialChar in specialChars) myString = myString.Replace(specialChar, ' ');
// now reduce all spaces: this will loop until there's only one space each
while (myString.Contains(" ")) myString = myString.Replace(" ", " ");
// now change to target character
myString = myString.Replace(" ", "_");
这将采取“helloworld!XTest”并给出_hello_world!_Test。
希望有所帮助!