2011-02-07 15 views
55

मुझे जावास्क्रिप्ट का उपयोग करके कुछ तारों की जांच करनी है लेकिन केस संवेदनशीलता समस्याएं पैदा कर रही है। उदाहरणजावास्क्रिप्ट केस संवेदनशील होने के बिना स्ट्रिंग की तुलना

if('abc'=='ABC') 
{ 
return true; 
} 

यह अगर पाश अंदर नहीं जाना होगा, हालांकि शब्द का अर्थ ही कर रहे हैं के लिए । मैं भी खंड tolower का उपयोग के बाद से मुझे नहीं पता है कि यह डेटा कैसे आएगा तो इसका मतलब है पूर्व के लिए नहीं कर सकते:

if('aBc'=='abC') 
{ 
return true; 
} 

इस के लिए जे एस समारोह लिखने के लिए कैसे अगर यह jQuery के द्वारा किया जा सकता है।

+1

पहले से ही उत्तर दिए गए प्रश्न में इतनी बेहतर जानकारी है। मेरा सुझाव है कि आप (वर्तमान पाठक) इस पृष्ठ को अनदेखा करें –

उत्तर

111

आप दोनों तर्कों को कम मामला बना सकते हैं, और इस तरह आप हमेशा एक केस असंवेदनशील खोज के साथ समाप्त हो जाएंगे।

var string1 = "aBc"; 
var string2 = "AbC"; 

if (string1.toLowerCase() === string2.toLowerCase()) 
{ 
    #stuff 
} 
+2

नोट: आपको केवल कोड के लिए इसे अंधाधुंध रूप से लागू करने के बारे में सावधान रहना होगा क्योंकि स्ट्रिंग 1 == स्ट्रिंग 2 सत्य वापस आ जाएगा यदि दोनों चर शून्य हैं या झूठ हैं तो केवल एक शून्य है। जबकि string1.toLowerCase() == string2.toLowerCase() एक चर फेंक देगा यदि या तो चर शून्य है। –

+5

वास्तव में, जैसा कि पहले से ही उत्तर दिए गए प्रश्न में बताया गया है, आपको '.toLowerCase()' लेकिन '.toUpperCase()' का उपयोग नहीं करना चाहिए।http://stackoverflow.com/questions/2140627/javascript-case-insensitive-string-comparison और http://msdn.microsoft.com/en-us/library/bb386042.aspx –

+0

तीन बराबर चिह्न देखें? === – Sandeep

4

इस प्रयास करें ...

if(string1.toLowerCase() == string2.toLowerCase()){ 
    return true; 
} 

इसके अलावा, यह एक पाश नहीं है, यह कोड का एक खंड है। लूप आमतौर पर दोहराए जाते हैं (हालांकि वे संभवतः केवल एक बार निष्पादित कर सकते हैं), जबकि कोड का एक ब्लॉक कभी दोहराता नहीं है।

मैंने आपके नोट को LowerCase का उपयोग न करने के बारे में पढ़ा है, लेकिन यह नहीं देख सकता कि यह एक समस्या क्यों होगी।

8

आप string.match() का भी उपयोग कर सकते हैं।

var string1 = "aBc"; 
var match = string1.match(/AbC/i); 

if(match) { 
} 
+1

क्या/एबीसी/भाग के बजाय किसी अन्य चर का उपयोग करना भी संभव है ???? –

+0

YeppThat's मेरा: हाँ, आप कर सकते हैं: var string1 = "abc", regex =/एबीसी/i, मिलान = string1.match (regex); कृपया ध्यान दें कि मिलान स्ट्रिंग का हिस्सा होगा जो नियमित अभिव्यक्ति या शून्य से मेल खाता है यदि नियमित अभिव्यक्ति कुछ भी मेल नहीं खाती है। मैं एक वैकल्पिक उत्तर पोस्ट करूंगा जो ऐसा करने के लिए एक अलग रेगेक्स विधि का उपयोग करता है। – Akrikos

+5

आपको '/^abc$/i.test (" abc ") का उपयोग करना चाहिए क्योंकि एंकर के बिना शुरुआत और अंत में यह वास्तव में कह रहा है ** ** ** है, ** ** बराबर नहीं है **। –

18

एक अन्य विधि रेगुलर एक्सप्रेशन के उपयोग (इस जाकारी के जवाब की तुलना में अधिक सही है):

var string1 = 'someText', 
    string2 = 'SometexT', 
    regex = new RegExp('^' + string1 + '$', 'i'); 

if (regex.test(string2)) { 
    return true; 
} 

RegExp.test() सही या गलत वापस आ जाएगी।

इसके अलावा, शुरुआत में '^' (स्ट्रिंग की शुरुआत को इंगित करना) और '$' (स्ट्रिंग के अंत को इंगित करना) को अंत में सुनिश्चित करना सुनिश्चित करें कि आपकी नियमित अभिव्यक्ति केवल तभी मिल जाएगी जब 'कभी भी' stringToTest में एकमात्र पाठ है। यदि आप उस पाठ की तलाश में हैं जिसमें नियमित अभिव्यक्ति है, तो उन्हें छोड़ना ठीक है।

स्ट्रिंग.toLowerCase() विधि का उपयोग करना आसान हो सकता है।

तो ... नियमित अभिव्यक्ति शक्तिशाली हैं, लेकिन आपको केवल तभी उपयोग करना चाहिए यदि आप समझते हैं कि वे कैसे काम करते हैं। अप्रत्याशित चीजें तब हो सकती हैं जब आप कुछ ऐसा समझते हैं जिसे आप समझ में नहीं आता है।

बहुत से नियमित अभिव्यक्ति 'ट्यूटोरियल' हैं, लेकिन अधिकांश एक निश्चित उत्पाद को धक्का देने की कोशिश कर रहे हैं। http://weblogtoolscollection.com/regex/regex.php

यह रेगुलर एक्सप्रेशन के परीक्षण के लिए एक अच्छा उपकरण हो गया लगता है: http://gskinner.com/RegExr/ यहाँ क्या एक सभ्य ट्यूटोरियल की तरह दिखता है ... दी गई है, यह php प्रयोग करने के लिए लिखा है, लेकिन अन्यथा, यह एक अच्छा शुरुआत के ट्यूटोरियल प्रतीत होता है

+0

यह सबसे अच्छा है, यहां तक ​​कि यह शून्य के लिए काम करता है, जबकि ToUpperCase या ToLowerCase त्रुटि देता है - estupendo –

+0

क्या होगा यदि स्ट्रिंग 1 मान्य regexp पैटर्न नहीं है? eample 'new RegExp ('^(a $ ',' i ')' –

+0

@ बोहडन के लिए, मैं आपको जेएस कंसोल में उस तरह की चीज़ों को आजमाने के लिए प्रोत्साहित करता हूं। यदि आप करते हैं, तो आप पाएंगे कि आपका ब्राउज़र SyntaxError फेंकता है, इसलिए मुझे नहीं लगता कि यह इस मामले में प्रासंगिक है। – Akrikos

संबंधित मुद्दे