【问题标题】:Regex.Replace not replacing the whole string instead replacing chars in stringRegex.Replace 不替换整个字符串,而是替换字符串中的字符
【发布时间】:2014-06-19 18:31:38
【问题描述】:

我的代码如下:

ArticleContent = Regex.Replace(_article.Article, "[QUOTE]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

我在这里面临的问题是,正则表达式没有替换整个出现的字符串“[QUOTE]”。相反,它正在搜索字母 q,u,o,t,e 并用替换字符串替换它们。我知道问题是因为方括号,但我也希望将其替换。请帮忙。

【问题讨论】:

  • @"\[QUOTE\]"你还需要什么?

标签: c# .net regex string replace


【解决方案1】:

您必须转义方括号!并且不要忘记 REGEXP 是区分大小写的。这是我对您的代码的更正:

ArticleContent = Regex.Replace(_article.Article, "\[quote\]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

顺便说一句,我没有看到括号中包含任何“引用”,所以我不确定我得到了你想要做什么......

【讨论】:

  • _article.Article 向我返回我文章的 html 正式内容,因为我正在尝试替换 'quote'
【解决方案2】:

使用非捕获组将所有出现的字符串 QUOTE 替换为您想要的字符串,

(?:QUOTE)

所以你的代码应该是,

ArticleContent = Regex.Replace(_article.Article, "(?:QUOTE)", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

如果您想用其他字符串替换[QUOTE],请尝试转义方括号,因为正则表达式中的方括号具有特殊含义。

\[QUOTE\]

你的代码应该是,

ArticleContent = Regex.Replace(_article.Article, "\[QUOTE\]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

【讨论】:

  • 这会替换方括号吗,因为方括号是我字符串的一部分
  • @FarhanMukadam 你为什么不试试看呢?
  • @tnw 上面的代码没有忽略字符串 'QUOTE' 的大小写。
猜你喜欢
  • 2013-02-05
  • 2019-02-13
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
相关资源
最近更新 更多