【发布时间】:2020-10-05 22:48:44
【问题描述】:
基本上我有一个字符串数组,我用它来匹配单个字符串:
string[] matches = { "{A}", "{B}", "{CC}" };
然后我从这些中查找是否在我的字符串中找到任何这些:
string text = "Lorem Ipsum is {CC} simply dummy text {A} of the {CC} printing and typesetting industry {B}."
在这种情况下,我要收集的结果数组应该是:
string[] allmatches = { "{CC}", "{A}", "{CC}", "{B}" };
有没有使用 LINQ 或 Regex 的简单方法?
【问题讨论】:
-
您想要重叠匹配吗?例如,如果
matches是"hello world", "ello"。而text是"hello world!"。 -
你尝试了什么,你在哪里挣扎?请出示您的代码。以“什么是最好的方法”开头的问题往往是题外话。如果您对代码改进有任何疑问,请使用 SOs 姐妹板Codereview
-
string[] matches = Regex.Matches(text, @"\b\{[A-Z]\}\b").Cast<Match>().Select(m => m.Value).ToArray();?Regex和 Linq -
@Sweeper:没有重叠,但我的匹配应该保证不重叠,它们是独一无二的。
-
@DmitryBychenko:我刚试过,但我得到了 0 个匹配项。