字符串不匹配的单个字母

时间:2012-02-17 13:47:54

标签: java string

我想找出一个字符串有一个不匹配的东西。

1)CHARACTER INTERCHANGE W/O DISTURBING PATTERN
ACRPG0182F v/s ACRPG0812F
ACNPA4428K v/s ACHPA4428K

2)CHARACTER LENGTH DIFFERS BY 1 DIGIT
ACRPG0182F v/s ACRPG0812
ACRPG0182F v/s CRPG0812F

在案例1中,两个字符串长度相同但有1个字符不匹配
在案例2中,两个字符串长度相差1,并且任何一个字符在两个字符串中都可能不匹配。

4 个答案:

答案 0 :(得分:4)

  • 使用正则表达式(\d+
  • 获取号码
  • 使用所有字符(Set
  • 填充numberStr.toCharArray()
  • 使用guava Sets - Sets.difference(set1, set2),看看它是否只有一个元素

最初我认为你需要以不同的方式检查差异:是否只有一个数字是不同的,而不是“字符串只包含一个不同的数字,无论顺序如何”。如果订单也很重要,只需计算levenshtein distance并查看它是否等于1.

来自commons-lang

StringUtils.getLevenshteinDistance(s1, s2)会做到。

答案 1 :(得分:2)

如Bozho所述,使用levenstein distance可能是解决问题的最直接途径。该页面的定义似乎正是您所要求的。

  

Levenshtein距离(LD)是两者之间相似性的度量   字符串,我们将其称为源字符串和   目标字符串(t)。距离是删除的数量,   将s转换为t所需的插入或替换。

答案 2 :(得分:0)

在字符串上定义Xor函数。

答案 3 :(得分:0)

这听起来像是1的{​​{3}},请查看链接中的算法。