4 votes

Différence entre les chaînes de caractères d'une seule lettre

Je veux savoir si une chaîne de caractères a une erreur de correspondance.

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

Dans le cas 1, la longueur des deux chaînes est la même, mais il y a une différence d'un caractère.
Dans le cas 2, la longueur des deux chaînes diffère de 1 et n'importe quel caractère peut ne pas correspondre dans les deux chaînes.

4voto

Bozho Points 273663
  • obtenir le numéro en utilisant une expression rationnelle ( \d+ )
  • remplir un Set avec tous les caractères ( numberStr.toCharArray() )
  • utiliser goyave Sets - Sets.difference(set1, set2) et voir si elle a exactement un élément

À l'origine, je pensais que vous deviez vérifier la différence d'une manière différente : si un seul chiffre est différent, plutôt que "la chaîne ne contient qu'un seul chiffre différent, quel que soit l'ordre". Si l'ordre est également important, il suffit de calculer la distance de levenshtein et voir si c'est égal à 1.

StringUtils.getLevenshteinDistance(s1, s2) de commons-lang le fera.

2voto

RHSeeger Points 9217

Comme l'a mentionné Bozho, l'utilisation de la distance de levenstein est probablement la voie la plus directe pour résoudre votre problème. La définition de cette page semble être exactement ce que vous demandez.

La distance de Levenshtein (LD) est une mesure de la similarité entre deux chaînes de caractères, que nous appellerons chaîne source (s) et chaîne cible (t). chaîne cible (t). La distance est le nombre de suppressions, d'insertions ou de substitutions nécessaires pour transformer s en t.

0voto

UmNyobe Points 9508

Définir une fonction Xor sur des chaînes de caractères.

0voto

Óscar López Points 97105

Cela ressemble à un distance de Levenshtein de 1 Pour plus d'informations, consultez l'algorithme dans le lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X