【问题标题】:Using Regex.Replace() to replace a list of words fails使用 Regex.Replace() 替换单词列表失败
【发布时间】:2013-03-08 04:07:59
【问题描述】:

我正在尝试用一些 HTML 标记替换长字符串中的单词。尝试对列表中的多个单词执行此操作时,我似乎错过了一些东西,但它确实适用于单个单词。

这是我尝试过的: 出于测试目的,我将字符串减少并更改为:

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&lt;p&gt; und &lt;p&gt;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");
}

结果是未更改的字符串。我不知道为什么。如前所述,如果我只放置一个单词来替换它确实有效,即使我使用列表中的特定对象。所以我很确定列表的代码没有错,至少没有错。

我尝试过的其他事情:

  • 将每个单词的值放入一个单独的字符串中,并将其用于 Regex.Replace。失败。
  • 使用 MessageBox.Show() 显示 listTooltips[i].strWort 的值,以确保所有内容都按预期输出。
  • 使用 Regex.Match 检查上面的代码是否真的找到了任何东西,是的,它确实找到了所有东西。由于某种原因,它只是不能取代 ist。
  • 不使用正则表达式,而是使用 string.replace-method。这适用于上述循环,但由于缺少过滤器/匹配模式而导致不同的不需要的结果。即“Folgen”被替换为“WOWn”等。

真的很想知道为什么这主要是为了更好地理解它。但是我也喜欢 corse 的解决方案:-)

提前致谢!

【问题讨论】:

    标签: c#


    【解决方案1】:

    在您的for 循环中,您始终对原始文本strTest 执行Regex.Replace()

    您需要在 strResult 中先前替换的文本上调用它,否则每次替换(最后一个除外)都会被原始文本覆盖。

    试试这个:

    string strResult = strTest;
    for (int i = 0; i < listTooltips.Count(); i++) {
        strResult = Regex.Replace(strResult , "\\b" + listTooltips[i].strWort + "\\b", "WOW");
    }
    

    【讨论】:

    • 哇,这对我来说是一个愚蠢的错误。我实际上在我的代码中得到了字符串 strResult = strTest 行,但没有考虑将 strResult 放在 Regex.Replace 中。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2011-05-20
    • 2013-02-05
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多