【发布时间】:2020-03-21 12:19:08
【问题描述】:
我有一个可能包含以下一个或多个标签的字符串:
<CHOICE [some words] [other words]>
我需要替换(C#)所有出现的这个标签,如下所示:
Example: I like <CHOICE [cars and bikes] [apple and oranges]>
Result: I like cars and bikes
Example: I like <CHOICE [cars and bikes] [apple and oranges]>, I also like <CHOICE [pizza] [pasta]>
Result: I like cars and bikes, I also like pizza
基本上,只用第一组括号中出现的字符串替换整个标签。
看起来捕获组是要走的路,但我无法理解如何让它们工作。
感谢任何帮助!
编辑:正则表达式不是必需的,我认为这将是最好的方法,但我看到一些 cmets 告诉我不需要它,所以任何其他建议都一样好。谢谢!
【问题讨论】:
-
这里有正则表达式的替代方法 - 简单地使用第一个左括号和右括号的索引来获取您的文本
-
这个正则表达式或其他方法不止一步,老实说,你可以用 for 循环做得更快,代码更少
-
你尝试了什么,什么没用?
-
@TheGeneral 我试图弄清楚如何解决这个问题。首先,我需要将要替换的标签作为一个整体识别出来,然后将其替换为第一个括号的内容。如果同一字符串中有多个标签,则对标签的任何位置重复。到目前为止,我只处理了诸如
text = Regex.Replace(text, pattern, "fixedvalue");之类的正则表达式替换,所以我有点迷茫...... -
你是在 HTML 还是 XML 上使用这个?