Saya ingin menggunakan string.startsWith()metode tetapi mengabaikan kasusnya.
Misalkan saya memiliki String"Session" dan saya menggunakan startsWith"sEsSi" maka itu harus kembali true.
Bagaimana saya bisa mencapai ini?
Saya ingin menggunakan string.startsWith()metode tetapi mengabaikan kasusnya.
Misalkan saya memiliki String"Session" dan saya menggunakan startsWith"sEsSi" maka itu harus kembali true.
Bagaimana saya bisa mencapai ini?
Jawaban:
Gunakan toUpperCase()atau toLowerCase()untuk menstandarkan string Anda sebelum mengujinya.
String.equalsIgnoreCase()Anda akan menemukan bahwa Anda perlu membandingkan versi huruf kecil dan huruf besar dari String sebelum Anda dapat kembali secara meyakinkan false. Lihat stackoverflow.com/a/38947571/14731 untuk jawaban alternatif.
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())(di lingkungan Locale.Turkish), itu akan memberi saya kesalahan.
Salah satu opsinya adalah mengonversi keduanya menjadi huruf kecil atau huruf besar:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Ini salah. Lihat: https://stackoverflow.com/a/15518878/14731
Pilihan lainnya adalah menggunakan String#regionMatches()metode, yang mengambil argumen boolean yang menyatakan apakah akan melakukan pencocokan peka huruf besar / kecil atau tidak. Anda bisa menggunakannya seperti ini:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Ia memeriksa apakah daerah needledari indeks 0sampai panjang 5ada haystackmulai dari indeks 0sampai panjang 5atau tidak. Argumen pertama adalah true, artinya akan melakukan pencocokan tidak peka huruf besar / kecil.
Dan jika Anda adalah penggemar berat Regex , Anda dapat melakukan hal seperti ini:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i) bendera yang disematkan untuk mengabaikan pencocokan huruf.
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));bukanlah solusi yang tepat. Anda dapat mencoba ini: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));dengan argumen vm -Duser.country=TR -Duser.language=tr Dalam contoh ini Iadalah huruf besari
coba ini,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
Saya tahu saya terlambat, tetapi bagaimana dengan menggunakan StringUtils.startsWithIgnoreCase () dari Apache Commons Lang 3?
Contoh:
StringUtils.startsWithIgnoreCase(string, "start");
Cukup tambahkan dependensi berikut ke file pom.xml Anda (mengambil hipotesis bahwa Anda menggunakan Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Kamu bisa memakai someString.toUpperCase().startsWith(someOtherString.toUpperCase())
string.regionMatches(true, 0, prefix, 0, prefix.length());yang tidak menimbulkan biaya untuk "menormalkan" kedua string.