EDIT : यह उत्तर मूल रूप से 9 साल पहले जोड़ा गया था। आज आपको विकल्प के localeCompare
साथ उपयोग करना चाहिए sensitivity: 'accent'
:
function ciEquals(a, b) {
return typeof a === 'string' && typeof b === 'string'
? a.localeCompare(b, undefined, { sensitivity: 'accent' }) === 0
: a === b;
}
console.log("'a' = 'a'?", ciEquals('a', 'a'));
console.log("'AaA' = 'aAa'?", ciEquals('AaA', 'aAa'));
console.log("'a' = 'á'?", ciEquals('a', 'á'));
console.log("'a' = 'b'?", ciEquals('a', 'b'));
{ sensitivity: 'accent' }
बताता है localeCompare()
एक ही रूप में एक ही आधार पत्र के दो वेरिएंट के इलाज के लिए जब तक ऊपर वे अलग अलग उच्चारण चिह्न (तीसरा उदाहरण के रूप में)।
वैकल्पिक रूप से, आप उपयोग कर सकते हैं { sensitivity: 'base' }
, जो दो वर्णों को तब तक समान मानता है जब तक उनका आधार वर्ण समान होता है (इसलिए A
इसे समतुल्य माना जाएगा á
)।
ध्यान दें कि localeCompare
IE10 या उससे कम या निश्चित मोबाइल ब्राउज़रों में तीसरा पैरामीटर समर्थित नहीं है (ऊपर दिए गए पृष्ठ पर संगतता चार्ट देखें), इसलिए यदि आपको उन ब्राउज़रों का समर्थन करने की आवश्यकता है, तो आपको किसी प्रकार की गिरावट की आवश्यकता होगी:
function ciEqualsInner(a, b) {
return a.localeCompare(b, undefined, { sensitivity: 'accent' }) === 0;
}
function ciEquals(a, b) {
if (typeof a !== 'string' || typeof b !== 'string') {
return a === b;
}
// v--- feature detection
return ciEqualsInner('A', 'a')
? ciEqualsInner(a, b)
: /* fallback approach here */;
}
मूल उत्तर
जावास्क्रिप्ट में असंवेदनशील तुलना केस करने का सबसे अच्छा तरीका है match()
, i
झंडा के साथ RegExp विधि का उपयोग करना ।
केस-असंवेदनशील खोज
जब दोनों तारों की तुलना की जा रही है तो चर (स्थिरांक नहीं) हैं, तो यह थोड़ा अधिक जटिल है, क्योंकि आपको स्ट्रिंग से एक RegExp उत्पन्न करने की आवश्यकता है, लेकिन स्ट्रिंग को RegExp कंस्ट्रक्टर में भेजने से गलत मिलान या असफल मैच हो सकते हैं यदि स्ट्रिंग विशेष regex है इसमें वर्ण।
यदि आप अंतर्राष्ट्रीयकरण के बारे में परवाह नहीं करते हैं toLowerCase()
या toUpperCase()
इसका उपयोग नहीं करते हैं, तो यह सभी भाषाओं में सटीक केस-असंवेदनशील तुलना प्रदान नहीं करता है।
http://www.i18nguy.com/unicode/turkish-i18n.html
.localeCompare()
जावास्क्रिप्ट विधि देखें। केवल आधुनिक ब्राउज़रों द्वारा लिखित (IE11 +) के समय समर्थित है। देखें डेवलपर.