我试图用一些HTML标签替换长字符串中的单词。当我尝试为List中的多个单词执行此操作时,我似乎错过了一些东西,但它确实可以很好地用于单个单词。
这是我试过的: 出于测试目的,我将字符串缩减并更改为:
string strTest = "Ein toller Testtext mit Folge und Folgen sowie Folgen<p> und <p>Folge und Cauchyfolgen und Cauchy-Folgen und Folgeerscheinungen und Folgendem";
以下代码用作将“Folge”替换为“WOW”的文本:
strResult = Regex.Replace(strTest, "\\b" + "Folge" + "\\b", "WOW");
这导致:"Ein toller Testtext mit WOW und Folgen sowie Folgen<p> und <p>WOW und Cauchyfolgen und Cauchy-Folgen und Folgeerscheinungen und Folgendem"
,这是单个单词的理想结果。
以下代码产生了相同的结果,但使用的是对象列表,其中“strWort”是我要替换的单词。注意listTooltips [39] .strWort的值是“Folge”。
strResult = Regex.Replace(strTest, "\\b" + listTooltips[39].strWort + "\\b", "WOW");
在下一步中,我尝试为整个列表执行此操作。所以我做了以下事情:
for (int i = 0; i < listTooltips.Count(); i++)
{
strResult = Regex.Replace(strTest, "\\b" + listTooltips[i].strWort + "\\b", "WOW");
}
结果是String未更改。我迷失了为什么。如上所述,即使我使用列表中的特定对象,如果我只放一个Word来替换它也可以。所以我很确定列表的代码没有错,至少不完整。
我试过的其他事情:
真的想知道为什么这样做主要是为了更好地理解它。但是,id也喜欢解决问题的解决方案: - )
提前致谢!
答案 0 :(得分:1)
在for
循环中,您始终在原始文本Regex.Replace()
上执行strTest
。
您需要在strResult
中之前替换的文本上调用它,否则每个替换(最后一个替换除外)将被原始文本覆盖。
试试这个:
string strResult = strTest;
for (int i = 0; i < listTooltips.Count(); i++) {
strResult = Regex.Replace(strResult , "\\b" + listTooltips[i].strWort + "\\b", "WOW");
}