Comparați Șirul de modele

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"

prin compararea celor două șiruri cu prima mea, trebuie să reveniți la true .

Dar când fac s1.contanis (s2) , returnează false.

Există vreo altă modalitate ușoară de a compara aceste tipare de modele, fără să le împărțim fiecare și să comparăm unul cu altul?

0
este similar_text în PHP [ verificați acest lucru ] ... aceeași întrebare aici, de asemenea .
adăugat autor Prasanth, sursa

7 răspunsuri

Aceasta va efectua verificarea dacă s1 conține toate elementele de la s2 (separate de un spațiu):

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

Cod complet:

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
adăugat
Vă mulțumesc foarte mult, aceasta este ceea ce căutam.
adăugat autor commit, sursa

Conține verificări pentru "1 7 8" ca șir în "1 2 7 8" Deci, returnă false.

Ar trebui să utilizați metoda StringTokenizer.

1
adăugat

s1 cu siguranta nu contine s2.

ce incerci sa faci ? Dacă aveți nevoie să comparați valorile reale, divizați și convertiți la numere întregi

1
adăugat
el înțelege că se întoarce fals. întrebarea aici este cum să faceți acest lucru. că vrea să știe dacă există o bibliotecă care să accepte acest lucru. El știe că se poate face prin iterarea șirului.
adăugat autor zerocool, sursa

Metoda conține pe String returnează numai true dacă s1 conține complet s2. Cu alte cuvinte

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

Ar reveni adevărat dar

 s1.contains( "ll w" );

ar reveni fals.

Va trebui să tokenize ambele s1 și s2 și apoi să verificați dacă elementele s1 conțin toate elementele s2.

0
adăugat

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
adăugat

Utilizați următorul cod:

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
adăugat

Pentru că atunci când utilizați s1.contains (s2), nu se compară singurele litere în șir, ci întregul șir. De exemplu, dacă valoarea s1 este "2 1 7 8" atunci s1.contains (s2) va reveni la adevărat.

0
adăugat