ฉันสร้างโปรแกรม Java เพื่อเปรียบเทียบสองสตริง:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
จะแสดงคำว่า "ยินดีต้อนรับ" ฉันเข้าใจว่ามันเป็นเรื่องละเอียดอ่อน แต่ปัญหาของฉันคือฉันต้องการเปรียบเทียบสองสตริงโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ hai
คือผมคาดว่าการส่งออกจะเป็น
s1.equalsIgnoreCase(s2)
คุณอาจทำไม่ได้ทุกที่ที่ต้องทำ ฉันขอแนะนำให้คุณหาที่มาของสตริง - ไฟล์หรือฐานข้อมูลหรืออินพุตของผู้ใช้ - และแปลงเป็นตัวพิมพ์ใหญ่ (หรือตัวพิมพ์เล็ก) และใช้ต่อไปเพื่อเปรียบเทียบ
equalsIgnoreCase
แนวทางที่ยอมรับ อ่านเกี่ยวกับปัญหา Turkish I และปัญหา Unicode ที่คล้ายกันเพื่อดูเหตุผล
equalsIgnoreCase
ส่งคืนค่าที่ไม่ถูกต้องสำหรับภาษาตุรกีเพราะจะส่งกลับค่าจริงสำหรับการเปรียบเทียบ "i" และ "I" แม้ว่าจะส่งคืนค่าเท็จก็ตาม ดังนั้นฉันจึงสงสัยว่าถ้าคุณต้องการคำนึงถึงสถานที่Collator
ตั้งจริง ๆ แล้วa เป็นวิธีที่จะไป
toLowerCase
/ toUpperCase
บนสตริงทั้งหมดและการทำต่ออักขระก็ให้ผลลัพธ์ที่แตกต่างกันสองแบบเช่นกัน