string.startsWith()Yöntemi kullanmak istiyorum ama durumu görmezden geliyorum .
String"Session" a sahip olduğumu startsWithve "sEsSi" üzerinde kullandığımı varsayalım , o zaman geri dönmelidir true.
Bunu nasıl başarabilirim?
string.startsWith()Yöntemi kullanmak istiyorum ama durumu görmezden geliyorum .
String"Session" a sahip olduğumu startsWithve "sEsSi" üzerinde kullandığımı varsayalım , o zaman geri dönmelidir true.
Bunu nasıl başarabilirim?
Yanıtlar:
Test etmeden önce dizinizi standartlaştırmak için toUpperCase()veya kullanın toLowerCase().
String.equalsIgnoreCase()karşılaştırmanız gerektiğini keşfedeceksiniz . Alternatif bir yanıt için stackoverflow.com/a/38947571/14731 adresine bakın . false
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())(Yerel, Türk ortamında) bana yanlışlık verecektir.
Seçeneklerden biri, her ikisini de küçük veya büyük harfe dönüştürmektir:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Bu yanlış. Bakınız: https://stackoverflow.com/a/15518878/14731
Diğer bir seçenek de, büyük / String#regionMatches()küçük harfe duyarlı eşleme yapılıp yapılmayacağını belirten bir mantıksal argüman alan yöntemi kullanmaktır . Bunu şu şekilde kullanabilirsiniz:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Bu bölge olup olmadığını kontrol eder needledizinden 0kadar uzunluğu 5mevcut olan haystackindeks itibaren 0uzunluğu kadar 5ya da değil. İlk argüman, büyük / trueküçük harfe duyarsız eşleştirme yapacağı anlamına gelir.
Ve eğer sadece Regex'in büyük bir hayranıysanız, bunun gibi bir şey yapabilirsiniz:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i) gömülü bayrak, büyük / küçük harf eşleştirmeyi göz ardı etmek içindir.
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));uygun bir çözüm değil. Bunu deneyebilirsiniz: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));vm bağımsız değişkenleriyle -Duser.country=TR -Duser.language=tr Bu örnekte Ibüyük harftiri
bunu dene,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
Geç kaldığımı biliyorum, ama Apache Commons Lang 3'ten StringUtils.startsWithIgnoreCase () kullanmaya ne dersiniz?
Misal :
StringUtils.startsWithIgnoreCase(string, "start");
Aşağıdaki bağımlılığı pom.xml dosyanıza eklemeniz yeterlidir (Maven'i kullandığınız hipotezini dikkate alarak):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Kullanabilirsiniz someString.toUpperCase().startsWith(someOtherString.toUpperCase())
string.regionMatches(true, 0, prefix, 0, prefix.length());her iki dizgiyi de "normalleştirme" maliyetine yol açmayan kullanmaktır .