Порівняти String шаблонів

I have one string that contains String s1="1 2 7 8"

now suppose I have two string String s2="1 7 8" and String s3="1 2 8"

тому, порівнюючи ці два рядки з моїм першим, він повинен повернути true .

Але коли я роблю s1.contanis (s2) , він повертає false.

Чи існує якийсь інший простий спосіб порівняти ці типи шаблонів, не розділяючи їх і порівнюючи один за одним?

0
це similar_text у PHP [ перевірте це ] ... таке ж питання тут також .
додано Автор Prasanth, джерело

7 Відповіді

Це дозволить перевірити, чи містить s1 всі елементи з s2 (розділених пропуском):

Arrays.asList(s1.split(" ")).containsAll(Arrays.asList(s2.split(" ")));

Повний код:

public class StringContainsNumbers {
    public static void main(String[] args) {
        final String s1 = "1 2 7 8";
        final String s2 = "1 7 8";
        final String s3 = "1 2 8";

        System.out.println(stringContainsNumbers(s1, s2));
        System.out.println(stringContainsNumbers(s1, s3));
    }

    private static boolean stringContainsNumbers(String s1, String s2) {
        return Arrays.asList(s1.split(" ")).containsAll(Arrays.asList(s2.split(" ")));
    }
}
5
додано
Велике спасибі, це те, що я шукав.
додано Автор commit, джерело

Містить перевірки на весь "1 7 8" як рядок у "1 2 7 8" Так він повертає false.

Ви повинні використовувати метод StringTokenizer.

1
додано

s1 однозначно не містить s2.

що ви намагаєтеся зробити? Якщо вам потрібно порівняти фактичні значення, розбийте їх і перетворіть у цілі числа

1
додано
він розуміє, що він повертає помилково. тут питання, як це зробити. що він хоче знати, чи є яка-небудь бібліотека, яка підтримує це. Він знає, що це можна зробити через ітерацію рядка.
додано Автор zerocool, джерело

Метод contains на String повертає true тільки якщо s1 повністю містить s2. Іншими словами

 String s1 = "hello world";
 s1.contains( "llo" );

Повернеться правда, але

 s1.contains( "ll w" );

повернеться помилково.

Вам потрібно буде маркірувати як s1, так і s2, а потім перевірити, що елементи s1 містять всі елементи s2.

0
додано

you can do Google search "Java - String matches() Method" You are going to find many links. One of them is: http://www.tutorialspoint.com/java/java_string_matches.htm

0
додано

Використовуйте наступний код:

public class Main {
 public static void main(String[] args) {
    String one="1 7 8";
    String two= "1 2 8";
    List fistList= Arrays.asList(one.split(" "));
    List secondList= Arrays.asList(two.split(" "));
    boolean isContainAll=fistList.containsAll(secondList);
    System.out.println(isContainAll);
 }
}
0
додано

Тому що, коли ви використовуєте s1.contains (s2), він не порівнює окремі літери у рядку, але весь рядок. Наприклад, якщо значення s1 - "2 1 7 8", то s1.contains (s2) поверне true.

0
додано
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників