Έχω δύο "Strings", "str1" και "str2". Πώς μπορώ να ελέγξω αν το str2
περιέχεται μέσα στο str1
, αγνοώντας την περίπτωση;
str1.toLowerCase().contains(str2.toLowerCase())
Μπορείτε να χρησιμοποιήσετε τη μέθοδο toLowerCase()
:
public boolean contains( String haystack, String needle ) {
haystack = haystack == null ? "" : haystack;
needle = needle == null ? "" : needle;
// Works, but is not the best.
//return haystack.toLowerCase().indexOf( needle.toLowerCase() ) > -1
return haystack.toLowerCase().contains( needle.toLowerCase() )
}
Στη συνέχεια, καλέστε την χρησιμοποιώντας:
if( contains( str1, str2 ) ) {
System.out.println( "Found " + str2 + " within " + str1 + "." );
}
Παρατηρήστε ότι δημιουργώντας τη δική σας μέθοδο, μπορείτε να την επαναχρησιμοποιήσετε. Στη συνέχεια, όταν κάποιος επισημάνει ότι θα έπρεπε να χρησιμοποιήσετε τη μέθοδο contains
αντί της indexOf
, έχετε μόνο μία γραμμή κώδικα να αλλάξετε.
Θα χρησιμοποιούσα έναν συνδυασμό της μεθόδου contains και της μεθόδου toUpper
που αποτελούν μέρος της κλάσης String. Ένα παράδειγμα είναι το παρακάτω:
String string1 = "AAABBBCCC";
String string2 = "DDDEEEFFF";
String searchForThis = "AABB";
System.out.println("Search1="+string1.toUpperCase().contains(searchForThis.toUpperCase()));
System.out.println("Search2="+string2.toUpperCase().contains(searchForThis.toUpperCase()));
Αυτό θα επιστρέψει:
Search1=true<br>, Αναζήτηση2=false