ฉันต้องการใช้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" ทั้งสองสตริง