替换字符串中的单词但忽略重音字符

时间:2014-06-14 23:39:04

标签: c#

如果输入字符串是

  

Cat fish bannedwordbreadbánnedwordmousebãnnedword

应输出

  

猫鱼面包鼠

在不降低性能的情况下,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用多种方式但不使用它们(至少据我所知)在没有特定性能成本的情况下工作。

最明显的方法是首先删除重音字符,然后使用简单的string.Replace()。至于删除重音字符thisthis stackoverflow问题可以帮助你。

其他方法可能是将字符串拆分为字符串数组(每个字符串都是单独的字),然后删除每个等于' bannedword'使用parameter that makes Equals() method ignore accents

类似的东西:

string[] splittedInput = input.Split(' ');
StringBuilder output = new StringBuilder();
foreach(string word in splittedInput) 
{
  if(string.Compare(word, bannedWord, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == false)
  {
    output.Append(word);
  }
} 

string s_output = output.ToString();

//我没有在Visual Studio中对它进行过测试,因此可能会出现错误......(LINQ也可以简化它(并可能启用多元化))。

最后,应该可以提出一个聪明的正则表达式解决方案(可能是最快的方法)但不是正则表达式的专家我可以帮助你(this可能指向你在正确的方向(如果你至少知道关于正则表达式的东西)。)