如何用单个字符替换包括空格的许多特殊字符?

时间:2010-07-06 06:12:24

标签: c#

如何用单个字符替换包括空格的许多特殊字符?

5 个答案:

答案 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)

答案 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。

希望有所帮助!