2011-09-01 17 views
10

संभव डुप्लिकेट: एक स्ट्रिंग एक और में मौजूद रहने पर
JavaScript: string containsयह जांचने का सबसे अच्छा तरीका क्या है कि कोई स्ट्रिंग किसी दूसरे में मौजूद है या नहीं?

मैं एक एल्गोरिथ्म के लिए देख रहा हूँ की जाँच करने के।

उदाहरण के लिए:

'Hello, my name is jonh LOL.'.contains('Hello, my name is jonh'); //true 
'LOL. Hello, my name is jonh'.contains('Hello, my name is jonh'); //true 

अग्रिम धन्यवाद।

+0

यहां स्ट्रिंग में स्ट्रिंग की जांच करने के सबसे सामान्य तरीकों के लिए एक बेंचमार्क है: http://jsben.ch/#/o6KmH – EscapeNetscape

उत्तर

11

उपयोग indexOf:

String.prototype.contains = function(substr) { 
    return this.indexOf(substr) > -1; 
} 
'Hello, my name is jonh LOL.'.contains('Hello, my name is jonh'); //true 
'LOL. Hello, my name is jonh'.contains('Hello, my name is jonh'); //true 
+1

इस उत्तर में आगे, आप 'फ़ंक्शन में शामिल हो सकते हैं (हैस्टैक, सुई) { वापसी haystack.indexOf (सुई)> -1; } 'या स्ट्रिंग प्रोटोटाइप –

+0

@ जोनाथन पर भी एक बनाओ मैंने एक' स्ट्रिंग.प्रोटोटाइप 'फ़ंक्शन जोड़ा। –

+0

प्रोटोटाइप फ़ंक्शन लचीलापन सबक के लिए धन्यवाद! – blackhawk

0

मुझे लगता है कि पूर्व संकलित पर्ल आधारित रेगुलर एक्सप्रेशन के उपयोग बहुत कुशल होगा:

'Hello, my name is jonh LOL.'.indexOf('Hello, my name is jonh') > -1; //true 
'LOL. Hello, my name is jonh'.indexOf('Hello, my name is jonh') > -1; //true 

तुम भी String.prototype विस्तार कर सकते हैं एक contains समारोह है।

RegEx rx = new Regex('Hello, my name is jonh', RegexOptions.Compiled); 
rx.IsMatch('Hello, my name is jonh LOL.'); // true 
+0

मैं जावास्क्रिप्ट का उपयोग कर रहा हूं, लेकिन धन्यवाद: पी –

+0

यहां तक ​​कि बेहतर: 'var regex =/हैलो, मेरा नाम जोन/है; regex.test ("हैलो, मेरा नाम जोन एलओएल है।"); // true' – clarkb86

0

एक और विकल्प मिलान का उपयोग() द्वारा एक रेगुलर एक्सप्रेशन से मेल करने के लिए हो सकता है: http://www.w3schools.com/jsref/jsref_match.asp

> var foo = "foo"; 
> console.log(foo.match(/bar/)); 
null 
> console.log(foo.match(/foo/)); 
[ 'foo', index: 0, input: 'foo' ] 
1

डिजिटल ने indexOf विधि को इंगित करने का तरीका बताया है। यदि आप contains जैसे अधिक घोषणात्मक नाम चाहते हैं तो आप इसे String प्रोटोटाइप में जोड़ सकते हैं।

String.prototype.contains = function(toCheck) { 
    return this.indexOf(toCheck) >= 0; 
} 

उसके बाद अपने मूल कोड नमूना के रूप में

1

लिखा कैसे के बारे में अंधकार के लिए जा रहा काम करेगा:

!!~'Hello, my name is jonh LOL.'.indexOf('Hello, my name is jonh'); //true 
if(~'LOL. Hello, my name is jonh'.indexOf('Hello, my name is jonh')) 
    alert(true); 

बिटवाइस नहीं का उपयोग करना और बूलियन वंचितों को यह परिवर्तित की तुलना में एक बूलियन कन्वर्ट करने के लिए वापस।

+0

हालांकि यह काम करता है, 'वैल> -1' कम परिचालन – zzzzBov

+0

@zzzzBov है, तकनीकी रूप से !! अनजान है तो बस tilde काम करेगा। – Joe

+0

... इस बात पर निर्भर करता है कि आपको बुलियन मूल्य की कड़ाई से आवश्यकता है। मैं सहमत हूं, सही झूठी स्थिति का उत्पादन करेगा। – zzzzBov

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

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