用粗体中的同一单词替换多个单词
本文关键字:单词 替换 | 更新日期: 2023-09-27 18:32:42
我在RichTextBox中有一个文本,还有一个单词列表(wordList( - 我正在使用winforms。
我需要做的是单词列表中的所有单词都以粗体显示在文本中。
例:
文本:"我有一条文本,我需要用粗体输入一些单词">
列表中的单词 : "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();
}
结果在富文本框中
{'rtf1'ansiI have a text and I 'bneed'b0to put 'bsome'b0words in 'bbold'b0}
任何想法为什么??
我说的对吗?
在此之后,您是否需要将字符串恢复为原始形式? 因为您需要删除所有粗体标签。
但是,出于显示目的,您可以将字符串拆分为空格,这将为您提供一个数组。然后只需将所有匹配的数组项替换为 + 数组项 + 。
(你最好把它们放在一个跨度中,实际上有一个类。这将为您提供更大的灵活性 - 可以更改颜色,字体大小,粗体等。
另外,如果单词出现在另一个单词中,您是否想加粗该单词?例如,如果你正在寻找"卖",而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;
但是,这也会将 span 类加粗/添加到单词中找到的单词中。
或者,如上所述,您可以对输入字符串、" " 或 "." 等进行拆分,然后对每个输入字符串数组项运行 foreach。
附言这是不区分大小写的。
希望有帮助。
您似乎将网络与富文本框混淆了。示例代码仅在空格上拆分,并且不对大写字母执行任何操作。
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,但是当我在那里显示结果时,我忘记使用。用 RTF 代替 。发短信。。。。 (愚蠢的我!一切正常!