2012-05-22 17 views
6

देता है क्या जावास्क्रिप्ट में कोई फ़ंक्शन है जो एक स्ट्रिंग की तुलना करता है और एक बूलियन देता है? मैंने पाया। मैच लेकिन यह मेल खाने वाले स्ट्रिंग देता है। मैं उम्मीद कर रहा था कि कुछ और था ताकि स्ट्रिंग की तुलना में मेरे पास कम कोड होगा। चूंकि मैं यह जांचना चाहता था कि स्ट्रिंग में यह शब्द है या नहीं और आगे बढ़ें।स्ट्रिंग जावास्क्रिप्ट में तुलना करता है जो एक बूलियन

धन्यवाद

+0

आप मैच string2 लिए एक सटीक string1 लिए देख रहे हैं, या string1 कुछ है कि एक के भीतर कहीं भी हो सकती है बड़ा स्ट्रिंग 2? –

+0

जो मेरा पहला समाधान था लेकिन मुझे एक दोष का सामना करना पड़ा।ईमेल == मित्र ईमेल झूठी वापसी करेगा। इसलिए मैं जावास्क्रिप्ट के लिए फ़ंक्शन जैसे स्ट्रैम्प की तलाश में था। :) – magicianiam

उत्तर

11

आप उपयोग कर सकते हैं प्रकार वृद्धि, तो आप इस समारोह अक्सर उपयोग करने की आवश्यकता है, खासकर यदि:

String.prototype.isMatch = function(s){ 
    return this.match(s)!==null 
} 

तो आप इसका उपयोग कर सकते हैं:

var myBool = "ali".isMatch("Ali"); 

सामान्य दृश्य है कि प्रकार वृद्धि के उपयोग केवल तथ्य यह है कि यह अन्य augmentations के साथ भिड़ना कर सकते हैं की वजह से हतोत्साहित किया जाता है है।

Javascript Patterns पुस्तक के अनुसार, इसका उपयोग सीमित होना चाहिए।

मैं व्यक्तिगत रूप से लगता है कि यह ठीक है, जब तक कि आप इस तरह के रूप में एक अच्छा नामकरण का उपयोग करें:

String.prototype.mycompany_isMatch = function(s){ 
    return this.match(s)!==null 
} 

यह बदसूरत लेकिन सुरक्षित कर देगा।

+0

ग्रेट! (थोड़ा सा ओवरकिल शायद ?: डी) – ArtoAle

+0

मैंने उन चीज़ों को पहले नहीं देखा है। Ismatch क्या है? मुझे यह कोशिश करने दो। धन्यवाद – magicianiam

+0

@ जादूगर यह काम करेगा यदि आप इसे स्ट्रिंग प्रोटोटाइप में जोड़ते हैं - जैसा कि मैंने रेखांकित किया है। 'isMatch' जावास्क्रिप्ट ढांचे के लिए हमारा जोड़ा है, एक आंतरिक कार्य नहीं – Aliostad

5

है .indexOf() जो स्ट्रिंग पाया की स्थिति वापस आ जाएगी, या -1 नहीं करता है, तो

+0

मैंने हमेशा सोचा है कि केवल सरणी के लिए था। – magicianiam

+0

नहीं, यह तारों पर भी काम करता है! लेकिन मैं थोड़ा अस्पष्ट हूं कि आप एक स्ट्रिंग के भीतर एक सबस्ट्रिंग की तलाश कर रहे हैं, या सटीक (केस insenstive?) स्ट्रिंग तुलना .. –

+0

मामले संवेदनशील, लेकिन मैं अपनी समस्याओं को कम करने के लिए tolowercase का उपयोग करने की योजना बना रहा हूँ। मुझे यह कोशिश करने दो। धन्यवाद। आश्चर्य है कि Google ने मुझे यह क्यों नहीं दिखाया। – magicianiam

0

तुम सिर्फ एक तुलना उपयोग कर सकते हैं पाया।

if ("dog" == "cat") { 
    DoSomethingIfItIsTrue(); 
} else { 
    DoSomethingIfItIsFalse(); 
} 
+0

कड़ाई से बोलते हुए, यदि आप इस दृष्टिकोण को लेते हैं, तो आप '===', नहीं '==' का उपयोग करना चाहते हैं। मुझे संदेह है कि अधिकांश जावास्क्रिप्ट कोडर स्ट्रिंग प्रोटोटाइप को बढ़ाने के बजाय इसका उपयोग करेंगे, इसलिए कम से कम समानता की जांच के लिए '===' का उपयोग करने की आदत में लोगों को कम से कम लायक है। –

0

मुझे पता है कि यह सही जवाब नहीं है जिसे आप ढूंढ रहे हैं लेकिन यह हमेशा ऐसा करने का एक प्रभावी तरीका है।

if(var1 == var2){ 
    //do this 
}else{ 
    //do that 
}; 
+0

बड़ी संख्या में लेखों (और मेरी व्यक्तिगत राय भी) के अनुसार '===' परीक्षण '==' (जो पारगमन नहीं है) से कहीं अधिक विश्वसनीय (और पारगमनशीलता प्रक्षेपण) है। इसके अलावा, अगर उसे बूलियन की ज़रूरत है तो वह सिर्फ '(var1 === var2? True: false) ' – ArtoAle

+0

का उपयोग कर सकता है हां, मैं समझता हूं कि वह एक बुलियन लौटना चाहता है लेकिन उसके बाद वह इसके साथ क्या करने जा रहा है, मेरी धारणा होगी अगर यह सच है तो कुछ करो और कुछ और गलत होने पर कुछ और करें। लेकिन हाँ, आप === के साथ सही हैं। –

1
myString.indexOf(myWord) > -1 

या, यदि आप एक समारोह चाहते हैं:

function hasWord(myString, myWord) { 
    return myString.indexOf(myWord) > -1; 
} 
9

आप रेगुलर एक्सप्रेशन से test() विधि है जो एक बूलियन रिटर्न का उपयोग कर सकते हैं:

/a/.test('abcd'); // returns true. 
+1

यह सही उत्तर है। "'Test()' विधि नियमित अभिव्यक्ति और निर्दिष्ट स्ट्रिंग के बीच एक मिलान के लिए खोज निष्पादित करती है। 'सत्य' या 'झूठी' देता है।" - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test –

0

वास्तव में, .match() चाल आप के लिए है क्योंकि यह यदि कोई पैटर्न मिलान तार की एक सरणी देता है, अशक्त अन्यथा कर सकते हैं।

वैसे भी, यदि आप सिर्फ यह जांचना चाहते हैं कि किसी स्ट्रिंग में कोई अन्य स्ट्रिंग है या नहीं, तो indexOf() का उपयोग करने की अधिक संभावना है (यदि कोई सबस्ट्रिंग नहीं मिलती है तो यह -1 वापस आ जाएगी)।

पहला समाधान आपके उद्देश्य के लिए थोड़ा अधिक है।

आप समानता के लिए जाँच करना चाहते हैं दूसरे छोर पर यदि आप `उपयोग कर सकते हैं string1 === string2``

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