ฉันต้องการใช้string.startsWith()
วิธีการ แต่ไม่สนใจกรณี
สมมติว่าฉันมีString
"เซสชัน" และฉันจะใช้startsWith
ที่ "sEsSi" true
แล้วมันควรจะกลับมา
ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
ฉันต้องการใช้string.startsWith()
วิธีการ แต่ไม่สนใจกรณี
สมมติว่าฉันมีString
"เซสชัน" และฉันจะใช้startsWith
ที่ "sEsSi" true
แล้วมันควรจะกลับมา
ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
คำตอบ:
ใช้toUpperCase()
หรือtoLowerCase()
เพื่อสร้างมาตรฐานสตริงของคุณก่อนทดสอบ
String.equalsIgnoreCase()
คุณจะพบว่าคุณจำเป็นต้องเปรียบเทียบStrings ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ก่อนจึงจะสรุปfalse
ได้ โปรดดูstackoverflow.com/a/38947571/14731สำหรับคำตอบอื่น
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())
(ในพื้นที่ของตุรกี) มันจะทำให้ฉันเป็นเท็จ
ทางเลือกหนึ่งคือการแปลงทั้งสองเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
นี่เป็นสิ่งที่ไม่ถูกต้อง ดู: https://stackoverflow.com/a/15518878/14731
อีกทางเลือกหนึ่งคือการใช้String#regionMatches()
method ซึ่งใช้อาร์กิวเมนต์บูลีนที่ระบุว่าจะทำการจับคู่แบบคำนึงถึงขนาดตัวพิมพ์หรือไม่ คุณสามารถใช้งานได้ดังนี้:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
ตรวจสอบว่าพื้นที่needle
จากดัชนี0
จนถึงความยาว5
มีอยู่ในการhaystack
เริ่มต้นจากดัชนี0
จนถึงความยาว5
หรือไม่ อาร์กิวเมนต์แรกคือtrue
หมายความว่าจะทำการจับคู่แบบไม่คำนึงถึงขนาดตัวพิมพ์
และถ้าคุณเป็นแฟนตัวยงของRegexคุณสามารถทำสิ่งนี้ได้:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i)
แฟล็กที่ฝังไว้สำหรับละเว้นการจับคู่กรณี
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));
ไม่ใช่วิธีแก้ปัญหา คุณสามารถลองสิ่งนี้: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));
ด้วยอาร์กิวเมนต์ vm -Duser.country=TR -Duser.language=tr
ในตัวอย่างนี้I
เป็นตัวพิมพ์ใหญ่i
myString.toLowerCase().startsWith(starting.toLowerCase());
ลองสิ่งนี้
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
ฉันรู้ว่าฉันมาสาย แต่ถ้าใช้ StringUtils.startsWithIgnoreCase () จาก Apache Commons Lang 3 ล่ะ
ตัวอย่าง:
StringUtils.startsWithIgnoreCase(string, "start");
เพียงเพิ่มการอ้างอิงต่อไปนี้ในไฟล์ pom.xml ของคุณ (โดยใช้สมมติฐานที่คุณใช้ Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
คุณสามารถใช้ได้ someString.toUpperCase().startsWith(someOtherString.toUpperCase())
คุณสามารถทำได้เสมอ
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
ใช้เริ่มต้นด้วยและ toLowerCase ด้วยกัน
แบบนี้
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
string.regionMatches(true, 0, prefix, 0, prefix.length());
ที่ไม่ต้องเสียค่าใช้จ่ายในการ "normalizing" ทั้งสองสตริง