我在RichTextBox中有一个文本,还有一个单词列表(wordList) - 我正在使用winforms。
我需要做的是wordList中的所有单词都以粗体显示在文本中
示例:
文字:“我有一个文字,我需要用粗体字加上一些文字”
列表中的字词:"need"; "some"; "bold"
结果:“我有一个文字,我需要将一些字词加入粗体” 我试过这个(我在stackoverflow中看到了类似的帖子)
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}
任何想法为什么?
答案 0 :(得分:1)
我是否认为这是在回发/ 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;
但是,这也会将span类加粗/添加到单词中找到的单词。
或者,如上所述,您可以对输入字符串,“”或“。”等进行拆分,然后在每个输入字符串数组项上运行foreach。
聚苯乙烯。这是不区分大小写的。
希望有所帮助。
答案 1 :(得分:0)
您似乎对Web文本框感到困惑。示例代码仅在空格上分割,并且不对Capitals执行任何操作。
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();
}
答案 2 :(得分:0)
感谢所有人,但我找到了答案 我正在使用RichTextBox,但当我显示结果时,我忘了使用.Rtf而不是.Text ....(愚蠢的我!) 一切都很好!