如何匹配两个字符串,一个包含“and”,另一个包含“&”或“+”?

Chr*_*isF -3 c# string comparison replace

我正在比较两个标题列表以获得第三个列表。在这种情况下,第一个列表是艺术家的所有专辑的列表,第二个列表是库中所述艺术家的专辑的列表,第三个列表是库中缺少的专辑。

我的代码运行良好,可以处理丢失的标点符号和重音字符,但当涉及到可以是“<word 1> 和 <word 2>”或“<word 1> & <word 2>”的标题时,它会失败甚至“<单词 1> + <单词 2>”。

最简单的解决方案是对所有标题执行类似的操作:

title = title.Replace(" + ", " and ").Replace(" & ", " and ");
Run Code Online (Sandbox Code Playgroud)

以便它们都具有相同的形式。注意:我正在检查由空格包围的符号,希望确保我得到符号表示“和”的情况。

然而,这并不让我觉得非常有效,尤其是对于一长串标题。

是否有更有效的方法来进行文本替换,或者更好的是,有一种比较原始字符串以获得有效匹配的方法?

Sco*_*ott 5

我下面的答案更好。使用字符类来解释空格“ [+&] ”。

您可以使用正则表达式:

  • () 对正则表达式进行分组
  • \\+ 将匹配“+”字符
  • '|' 意味着或
  • & 将匹配 '&' 字符
var title = Regex.Replace(title, "(\\+|&)", "and")
Run Code Online (Sandbox Code Playgroud)

在这里查看它的实际效果: https: //dotnetfiddle.net/9HY1pH

  • 不要忘记,当被空格包围时,它需要匹配 &amp; 和 +。 (3认同)