Comment comparer deux Ssortingngs en Java sans prendre en compte les espaces?

J’ai un exemple.

public class Test { public static void main(Ssortingng[] args) { Ssortingng a="VIJAY KAKADE"; Ssortingng b="VIJAY KAKADE"; if(a.equalsIgnoreCase(b)){ System.out.println("yes"); }else{ System.out.println("no"); } } } 

Je dois vérifier ces chaînes sans considérer les espaces. Comment est-ce que je réalise ceci? Comment ignorer les espaces dans les chaînes lorsque je les compare?

Vous pouvez essayer de créer une nouvelle chaîne en remplaçant tous les espaces vides.

 if(a.replaceAll("\\s+","").equalsIgnoreCase(b.replaceAll("\\s+",""))) { // this will also take care of spaces like tabs etc. } 

puis comparer.

Remplacez les espaces par une chaîne vide:

 if (a.replace(" ", "").equalsIgnoreCase(b.replace(" ", ""))) 

Je pense que le remplacement de tous les espaces par une chaîne vide présente le danger de vérifier la situation suivante (trouver les deux noms égaux):

 Ssortingng a = "ANN MARIE O'RIORDAN" Ssortingng b = "ANNMARIE O'RIORDAN" 

Je sais que je suis peut-être en train de couper les cheveux en quatre, mais j’ai trouvé cette question tout en recherchant une solution similaire pour vérifier les requêtes SQL dans un test unitaire. Mes requêtes étant composées de plusieurs static final Ssortingngs linéaires static final Ssortingngs , je souhaitais m’assurer de ne manquer aucun espace.

À cette fin, je pense que le remplacement de tous les espaces blancs par un seul espace, ou peut-être par un caractère spécial, est la solution la plus sûre. Elle nécessite alors une expression régulière:

 if (a.sortingm().replaceAll("\\s+", " ").equalsIgnoreCase(b.sortingm().replaceAll("\\s+", " "))) { // Ssortingngs equivalent } 

Pensées?

Comme Zoltan l’a fait remarquer à juste titre, toutes les réponses autres que la sienne sont en fait fausses.

Pour utiliser les fonctionnalités d’une bibliothèque tierce, je suggère hamcrest :

 import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace; public class Main { public static void main(Ssortingng[] args) { Ssortingng a = "VIJAY KAKADE"; Ssortingng b = "VIJAY KAKADE"; System.out.print(Ssortingng.format("'%s' and '%s' matching: ", a, b)); if (equalToIgnoringWhiteSpace(a).matches(b)) { System.out.println("yes"); } else { System.out.println("no"); } Ssortingng c = "VIJAYKAKADE"; System.out.print(Ssortingng.format("'%s' and '%s' matching: ", a, c)); if (equalToIgnoringWhiteSpace(a).matches(c)) { System.out.println("yes"); } else { System.out.println("no"); } } } 

résultats:

 'VIJAY KAKADE' and 'VIJAY KAKADE' matching: yes 'VIJAY KAKADE' and 'VIJAYKAKADE' matching: no 

La méthode Ssortingng # replace () vous est utile.

 public static void main(Ssortingng[] args) { Ssortingng a="VIJAY KAKADE"; Ssortingng b="VIJAY KAKADE"; a = a.replace(" ", ""); b = b.replace(" ", ""); if(a.equalsIgnoreCase(b)){ System.out.println("yes"); }else{ System.out.println("no"); } } 

si vous voulez remplacer tous les espaces, y compris les tabs, etc., vous pouvez utiliser

 a = yourOriginalSsortingng.replaceAll("\\s", ""); b = yourOriginalSsortingng.replaceAll("\\s", ""); return a.equalsIgnoreCase(b); 

edit: woah ninja aimerais diable

 a.replace(" ","") 

est votre meilleur pari. Cependant, vous pouvez utiliser a.sortingm() pour supprimer les espaces blancs de a.sortingm() et de fin si vous ne voulez ignorer que les espaces blancs de début et de fin. Aussi, le SsortingngUtils de Apache commons a beaucoup plus de fonctions pour aider

 public static void main(Ssortingng args[]) { Ssortingng a = "My Name is AB"; Ssortingng b = "My Name is AB"; System.out.println("Match = " + equalsIgnoreSpace(a, b, false)); } static boolean equalsIgnoreSpace(Ssortingng s1, Ssortingng s2, boolean matchCase) { Ssortingng val1 = ssortingpExtraSpaces(s1); Ssortingng val2 = ssortingpExtraSpaces(s2); if(matchCase) { return val1.equals(val2); } else { return val1.equalsIgnoreCase(val2); } } static Ssortingng ssortingpExtraSpaces(Ssortingng s) { Ssortingng formattedSsortingng = ""; java.util.SsortingngTokenizer st = new java.util.SsortingngTokenizer(s); while(st.hasMoreTokens()) { formattedSsortingng += st.nextToken() + " "; } return formattedSsortingng.sortingm(); } 

Vous pouvez utiliser Ssortingng.replace () pour supprimer les espaces dans les deux chaînes.

  Ssortingng aMod = a.replace(" ",""); Ssortingng bMod = b.replace(" ",""); if( aMod.equalsIgnoreCase(bMod) ){ ...