gpt4 book ai didi

c# - 如何正确替换字符串

转载 作者:行者123 更新时间:2023-12-02 22:40:58 26 4
gpt4 key购买 nike

在我的代码中,我找到所有匹配元素并将其替换为特殊值。

Regex imgRule = new Regex("img id=\\\".+?\\\"");
MatchCollection matches = imgRule.Matches(content.Value);
string result = null;
foreach (Match match in matches)
result = match.Value;

if (result != null)
{
var firstOrDefault = node.ListImages.FirstOrDefault();
if (firstOrDefault != null)
{
var htmlWithImages = content.Value.Replace(result, string.Format("img src='{0}' class='newsimage' width='300'", firstOrDefault.ImageUrlId));
node.Content = htmlWithImages;
}
}

但是,我的代码是错误的,因为如果有多个匹配项,它只会替换最后一个,我该如何更正我的代码以替换文本中的所有匹配项?

最佳答案

您的 for 循环主体周围缺少大括号。没有花括号,唯一被执行多次的行是第一行。

试试这个:

foreach (Match match in matches)
{ // added curly brace here
result = match.Value;

if (result != null)
{
var firstOrDefault = node.ListImages.FirstOrDefault();
if (firstOrDefault != null)
{
var htmlWithImages = content.Value.Replace(result,
string.Format("img src='{0}' class='newsimage' width='300'",
firstOrDefault.ImageUrlId));
node.Content = htmlWithImages;
}
}
} // added curly brace here

我还想补充两点:

  • 有一个名为 Regex.Replace 的方法,您可以使用它来代替先使用正则表达式查找要替换的字符串,然后再使用 string.Replace
  • 如果您尝试解析 HTML,最好使用 HTML 解析器。看看HTML Agility Pack看看它是否可以更简单地解决您的问题。

关于c# - 如何正确替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10785730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com