2010-01-06 3 views
1

Je cherche un lbrary Java 5 qui me permet de comparer un texte sous forme de lignes suivantes renvoie true:cordes Comparer Bibliothèque

  • " foo bar " == "foo bar"
  • "foo\nbar" == "foo bar"
  • "foo\tbar" == "foo bar"
  • "féé bar" == "fee bar"
  • et ainsi sur ...

Des suggestions?

+2

vous voulez dire comme une regex? –

+0

Oui, comme une regex. Mais tout-en-un. – enguerran

+0

Les 'String.matches()' de Java ne sont-ils pas suffisants? –

Répondre

1

Je ne pense pas que vous trouverez une bibliothèque avec ces règles spécifiques. Vous devrez les coder vous-même. Pour certaines règles, les expressions régulières ou même les méthodes du framework String peuvent être utiles, mais, pour la dernière règle, je pense que vous devrez garder un Map d'égalité pour ces caractères spéciaux. Ensuite, vous devrez parcourir chaque caractère de la chaîne en les comparant à l'aide de cette carte. Et comme vous parcourez déjà la chaîne, vous pourriez peut-être appliquer toutes les règles en une seule fois, en évitant les expressions régulières.

+0

Il n'y a pas de réponse parfaite, mais la vôtre est exhaustive. Mais au lieu d'une carte, j'utilise un ensemble de char dans regex (f.i. [êéèë]) avec replaceAll. – enguerran

1

On dirait que vous voulez écrire une méthode pour "normaliser" vos chaînes selon vos règles, avant de les comparer. Utilisez trim pour la première règle, un nombre de replace, ou peut-être StringUtils.replaceChars(), pour les autres.

1

Il n'a pas directement votre fonctionnalité spécifiée, mais vous pouvez également être en mesure d'utiliser les fonctions de CharMatcher trouvés dans la bibliothèque google-goyave: http://code.google.com/p/guava-libraries/

1

Il semble y avoir des fonctions dans la bibliothèque de soins intensifs pour enlever diacritiques marques:

http://site.icu-project.org/

Le reste, vous pouvez probablement le faire avec une ou plusieurs expressions régulières.

+1

Shoot, dans JDK 1.6, vous pouvez utiliser java.text.Normalizer pour supprimer les signes diacritiques! Auparavant, c'était une classe interne à Sun. –