【问题标题】:Match two strings on the basis of words only neglecting some special characters根据单词匹配两个字符串,只忽略一些特殊字符
【发布时间】:2026-01-01 04:05:01
【问题描述】:

我正在尝试匹配两个包含不同特殊字符的字符串,例如 (-,:;) 但单词是相同的。 例如。字符串 1 --> 嗨,你好吗? 字符串 2 --> Hi- 你好吗。

在上面的示例字符串中,单词是相同的,但唯一的区别在于 (,?-.)。

所以我想知道我如何匹配这些字符串,以便得到“字符串相等”的答案。

【问题讨论】:

  • 也许删除除字母字符之外的所有内容?
  • 我不会向您展示完整的解决方案,有很多选择。一种解决方案是简单地将这些字符替换为空字符,然后比较字符串。检查String#replaceAll
  • 我得到的第一个字符串来自我的数据库,所以我无法从中删除任何内容。
  • 但您可以复制一份并从中删除。
  • 您不必使用替换的字符串更新数据库。您可以替换从数据库中读取的字符串,并在比较后忽略它。

标签: java regex string


【解决方案1】:

你可以试试这样的

    boolean res = s1.replaceAll("[\\W]", "").equals(s2.replaceAll("[\\W]", ""));

【讨论】: