Подтвердить что ты не робот

Как сравнить две строки в java без учета пробелов?

У меня есть один пример.

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

Мне нужно проверить эти строки без учета пробелов. Как мне это достичь? Как игнорировать пробелы в строках, когда я их сравниваю?

4b9b3361

Ответ 1

Вы можете попытаться создать новую строку, заменив все пустые пространства.

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

затем сравните.

Ответ 2

Замените пробелы пустой строкой:

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

Ответ 3

Я думаю, что замена всех пробелов пустой строкой представляет опасность проверки следующей ситуации (определение двух имен):

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

Я знаю, что я могу разделить волосы здесь, но я нашел этот вопрос, ища аналогичное решение для проверки SQL-запросов в unit test. Поскольку мои запросы являются многострочными static final Strings, я хотел убедиться, что я не пропустил нигде.

С этой целью я считаю, что заменять все пробелы одним пространством или, возможно, особым символом является безопасное решение, которое тогда требует регулярного выражения:

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

Мысли?

Ответ 4

Как правильно указывает Золтан, все ответы, кроме него, на самом деле ошибочны.

Для использования функций из сторонней библиотеки я предлагаю hamcrest:

import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace;

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

        String c = "VIJAYKAKADE";
        System.out.print(String.format("'%s' and '%s' matching: ", a, c));
        if (equalToIgnoringWhiteSpace(a).matches(c)) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
    }
}

возвращает:

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

Ответ 5

Метод String # replace() полезен для вас.

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

Ответ 6

если вы хотите заменить все пробелы, включая вкладки и т.д., вы можете использовать

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

edit: woah ninja'd like heck

Ответ 7

a.replace(" ","")

- ваш лучший выбор. Однако вы можете использовать a.trim() чтобы удалить ведущие и завершающие пробелы, если вы знаете, что хотите игнорировать только ведущие и конечные пробелы. Кроме того, StringUtils от apache commons имеет гораздо больше функций, чтобы помочь

Ответ 8

Вы можете использовать String.replace(), чтобы удалить пробелы в обеих строках.

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

Ответ 9

public static void main(String args[]) {
    String a = "My Name is A B";
    String b = "My Name is A    B";

    System.out.println("Match = " + equalsIgnoreSpace(a, b, false));
}

static boolean equalsIgnoreSpace(String s1, String s2, boolean matchCase) {

   String val1 = stripExtraSpaces(s1);
   String val2 = stripExtraSpaces(s2);

   if(matchCase) {
       return val1.equals(val2);
   } else {
       return val1.equalsIgnoreCase(val2);
   }
}

static String stripExtraSpaces(String s) {
    String formattedString = "";
    java.util.StringTokenizer st = new java.util.StringTokenizer(s);

    while(st.hasMoreTokens()) {
        formattedString += st.nextToken() + " ";
    }

    return formattedString.trim();
}