Tek bir dizgede kelimeleri bulma ve karşılaştırma. Java

Eğer bir dize iki kelime arıyorum. Nasıl giderdim?

Örneğin, "asdgcatgadfdog" dizesi kedi ve köpeği içerir. Bu kelimeleri bir dizgede aramaya, sonra ikisini de bulursa doğru yazdırmaya nasıl giderim?

string.startsWith olamaz, çünkü bununla başlamaz ve içerdiğini sanmıyorum. Ya da en azından, içerdiği şekilde çalışmasını sağlayamadım.

Doğru yönde bir itme tüm aradığım şey.

0
içerir veya indexOf arkadaşlarınızdır
katma yazar Ilya Bursov, kaynak

6 cevap

Normal bir ifade kullanabilirsiniz:

boolean found = "asdgcatgadfdog".matches("(?i).*(cat.*dog)|(dog.*cat).*");
1
katma
public static void main(String[] args) {
String str = "asdgcatgadfdog";
if(str.indexOf("cat")!= -1 && str.indexOf("dog")!= -1){
    System.out.println("true");
}else{
    System.out.println("false");
}
}
1
katma

Aşağıdaki kodu kontrol edin:

public static void main(String[] args) {
    String word = "asdgcatgadfdog";
    if(word.contains("cat")){
        System.out.println("true");
    }
}
1
katma

Bunu dene:

String str= "asdgcatgadfdog";
if(str.contains("cat") && str.contains("dog")){
    System.out.println("Match");
}
0
katma
boolean match = str1.toLowerCase().contains(str2.toLowerCase())
0
katma

indexOf() veya içerir() 'i kullanabilirsiniz. Aslında, içerir() , indexOf() 'yu çağırıyor:

public boolean contains(CharSequence s) {
    return indexOf(s.toString()) > -1;
}  

Aşağıdaki kodu kontrol edin:

String str1 = "lsjfcatsldkjglsdog";
String str2 = "lsjfjlsdjsldkjglsdog";
System.out.println("contains:");
System.out.println("str1: "
        + (str1.contains("cat") && str1.contains("dog")));
System.out.println("str2: "
        + (str2.contains("cat") && str2.contains("dog")));
System.out.println("indexOf:");
System.out.println("str1: "
        + (str1.indexOf("cat") > -1 && str1.indexOf("dog") > -1));
System.out.println("str2: "
        + (str2.indexOf("cat") > -1 && str2.indexOf("dog") > -1));

Çıktı:

contains:
str1: true
str2: false
indexOf:
str1: true
str2: false
0
katma