通过大胆的同一个词替换多个单词(replace multiple words by the same

2019-10-21 08:53发布

我有一个RichTextBox文本和单词列表(单词表) - 我使用的WinForms。
我需要做的是所有的都在词表的话出现在加粗的文字。
例如:
文字:“我有一个文本,我需要把一些词在大胆”

在列表中的词: "need"; "some"; "bold" "need"; "some"; "bold"

结果是:“我有一个文本,我需要一些词在大胆
我想这(我在这里看到的计算器类似的帖子)

text= "" + text+ "";

foreach (var word in wordList)
{
    string w = string.Format(" {0} ", word);
    if (text.Contains(w))
    {
        while (text.Contains(w))
        {
            text= text.Replace(w, "<b>"+w+"</b>");
        }
    }
}

text = text.Trim();

我怎么能说字W需要在大胆?

编辑:
我想这个解决方案

  public string MakeBold(string text, string[] splitwords)
  {
      var sb = new StringBuilder();
      var words = text.Split(' ');
      sb.Append(@"{\rtf1\ansi ");
      foreach (var word in words)
      {
          if (splitwords.Contains(word))
          {
              sb.Append(@"\b" + word + @"\b0");
          }
          else
          {
              sb.Append(word);
              sb.Append(@" ");
          }
      }
      sb.Append(@"}");
      return sb.ToString();
  }

其结果是在RichTextBox的

{\rtf1\ansiI have a text and I \bneed\b0to put \bsome\b0words in \bbold\b0}    

任何想法,为什么?

Answer 1:

看来你是在混淆网络具有丰富的文本框中。 示例代码只在分割空间,并且没有做任何资本。

public string MakeBold(string text, string[] splitwords)
{
    var sb = new StringBuilder();
    var words = text.Split(" ");   
    sb.Append(@"{\rtf1\ansi");
    foreach (var word in words){
      if (splitwords.Contains(word)){
         sb.Append(@"\b"+word+ @"\b0 ");
      }
      else
      {
         sb.Append(word);
         sb.Append(@" ");
      }
    }
    sb.Append(@"}");
    return sb.ToString();
}


Answer 2:

我说得对,这是在回发/ AJAX调用发生了什么?

你需要在字符串回本后其原来的形式? 如您需要剥去了所有的粗体标记。

但是,你可以显示目的,各执一个空间,这会给你一个数组的字符串。 然后,只需更换+ arrayItem +所有匹配的数组项。

(您可以更好地将它们放在一个跨度,有类实际上这会给你更多的灵活性 - 可以改变颜色,字体大小,粗体,等等,等等)

此外,你想大胆的话,如果它出现在一个字? 例如,如果你正在寻找“卖出”,并inputString是“卖我的房子”,你最终会得到:“卖我的房子”

为了简便:

var inputString = "your input string!"
var outputString = "";
var wordsToFindArray = [string array of the words you are looking to make bold.]
foreach (wordToFind in wordsToFind)
{
    //pick one of these lines, not both, as the second will overwrite the first

    outputstring = inputstring.replace(wordToFind, "<span class=\"found-word\">" + wordToFind + "</span>"); //add span class
    outputstring = inputstring.replace(wordToFind, "<b>" + wordToFind + "</b>"); //boldify
}

return outputString;

然而,这也将boldify /跨度类添加到里面的话中找到的单词。

可替换地,如上所述,可以执行对输入字符串的分割,对“”或“”等,然后,在各输入字符串数组项在foreach。

PS。 这是不区分大小写。

希望帮助。



Answer 3:

感谢所有,但我找到了答案。
我使用RichTextBox的,但是当我在显示结果有我忘了使用.RTF代替。文本....(愚蠢的我!)一切正常!



文章来源: replace multiple words by the same word in bold