我想找出一个字符串有一个不匹配的东西。
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,并且任何一个字符在两个字符串中都可能不匹配。
答案 0 :(得分:4)
\d+
)Set
)numberStr.toCharArray()
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}},请查看链接中的算法。