javascript यह जांचने के लिए कि क्या स्ट्रिंग में जावास्क्रिप्ट में एक सबस्ट्रिंग है?





15 Answers

आप इस कथन के साथ स्ट्रिंग contains आसानी से एक विधि contains कर सकते हैं:

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

नोट: इसका उपयोग न करने के लिए वैध तर्क के लिए नीचे दी गई टिप्पणियां देखें। मेरी सलाह: अपने निर्णय का प्रयोग करें।

वैकल्पिक रूप से:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }
javascript string substring contains string-matching

आमतौर पर मैं एक String.contains() विधि की अपेक्षा करता String.contains() , लेकिन ऐसा प्रतीत नहीं होता है।

इसके लिए जांच करने का एक उचित तरीका क्या है?




ES6 में string.includes है :

"potato".includes("to");
> true

ध्यान दें कि आपको पुराने ब्राउज़र पर काम करने के लिए es6-shim या इसी तरह लोड करने की आवश्यकता हो सकती है।

require('es6-shim')



आप जावास्क्रिप्ट search() विधि का उपयोग कर सकते हैं।

सिंटेक्स है: string.search(regexp)

यह मैच की स्थिति देता है, या -1 यदि कोई मैच नहीं मिलता है।

वहां उदाहरण देखें: jsref_search

आपको एक जटिल नियमित अभिव्यक्ति वाक्यविन्यास की आवश्यकता नहीं है। यदि आप उनके साथ परिचित नहीं हैं तो एक साधारण st.search("title") करेगा। यदि आप चाहते हैं कि आपका परीक्षण केस असंवेदनशील हो, तो आपको st.search(/title/i) करना चाहिए।




यदि आप बदसूरत -1 चेक लिखने के विकल्प की तलाश में थे, तो आप इसके बजाय ~ tilde तैयार करते हैं।

if (~haystack.indexOf('needle')) alert('found');

जो ज़िमर्मन - आप देखेंगे कि ~ ऑन -1 का उपयोग करके इसे 0 तक बदल दिया गया है। संख्या 0 एक झूठा मूल्य है, जिसका अर्थ है कि यह एक बूलियन में परिवर्तित होने पर झूठी मूल्यांकन करेगा। यह पहली बार एक बड़ी अंतर्दृष्टि की तरह प्रतीत नहीं होता है, लेकिन इंडेक्सऑफ जैसे कार्यों को याद रखें जब क्वेरी नहीं मिलती है। इसका मतलब है कि इस तरह कुछ लिखने के बजाय:

if (someStr.indexOf("a") >= 0) {
  // Found it
} else  {
  // Not Found
}

अब आपके कोड में कम वर्ण हो सकते हैं ताकि आप इसे इस तरह लिख सकें:

if (~someStr.indexOf("a")) {
  // Found it
} else  {
  // Not Found
}

यहां अधिक जानकारी




जावास्क्रिप्ट में एक विधि लिखने का एक आम तरीका है:

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

Bitwise negation ऑपरेटर ( ~ ) का उपयोग -1 में 0 (झूठी) को चालू करने के लिए किया जाता है, और अन्य सभी मान गैर-शून्य (सत्य) होंगे।

डबल बुलियन नकारात्मक ऑपरेटर का उपयोग बुलियन में संख्या डालने के लिए किया जाता है।




वेब पर यहां और वहां पाए गए कोड स्निपेट का उपयोग करने के बजाय, आप एक अच्छी तरह से परीक्षण और दस्तावेजीकृत लाइब्रेरी का भी उपयोग कर सकते हैं। दो विकल्प मैं अनुशंसा करता हूं:

पहला विकल्प: Lodash उपयोग करें: इसमें एक विधि includes है:

_.includes('foobar', 'ob');
// → true

लोडाश एनपीएम के लिए सबसे लोकप्रिय जावास्क्रिप्ट लाइब्रेरी निर्भरता है और इसमें आसान जावास्क्रिप्ट उपयोगिता विधियों का भार है। तो कई परियोजनाओं के लिए आप इसे वैसे भी चाहते हैं ;-)

दूसरा विकल्प: या Underscore.string उपयोग करें: इसमें एक विधि include है:

_.str.include('foobar', 'ob');
// → true

यहां Underscore.string का विवरण दिया गया है, यह सिर्फ 9 केबी जोड़ता है लेकिन आपको सभी फायदे देता है जो एक अच्छी तरह से परीक्षण और दस्तावेजीकृत लाइब्रेरी की प्रतिलिपि 'स्नैप कोड स्निपेट पर है:

Underscore.string स्ट्रिंग्स के साथ आरामदायक हेरफेर के लिए जावास्क्रिप्ट लाइब्रेरी है, प्रोटोटाइप.जेएस, राइट.जेएस, अंडरस्कोर और सुंदर रूबी भाषा से प्रेरित Underscore.js के लिए एक्सटेंशन।

Underscore.string आपको कई उपयोगी फ़ंक्शंस प्रदान करता है: पूंजीकरण, साफ, शामिल, गिनती, एस्केप HTML, unescapeHTML, डालें, splice, startWith, endwith, titleize, trim, truncate और इसी तरह से।

ध्यान दें, Underscore.string Underscore.js से प्रभावित है लेकिन इसका उपयोग बिना किया जा सकता है।

आखिरी नहीं कम: जावास्क्रिप्ट संस्करण ES6 के साथ एक अंतर्निहित विधि includes है:

'foobar'.includes('ob');
// → true

अधिकांश आधुनिक ब्राउज़र पहले से ही इसका समर्थन करते हैं, ईएस 6 संगतता तालिका पर नजर रखते हैं।




नियमित अभिव्यक्ति का प्रयोग करें:

RegExp.test(string)




आप .indexOf लिए .indexOf तलाश रहे थे।

indexOf मिलान किए गए सबस्ट्रिंग में एक इंडेक्स वापस करने जा रहा है। सूचकांक जहां से सबस्ट्रिंग शुरू होता है उससे संबंधित होगा। यदि कोई मैच नहीं है, तो -1 वापस आ गया है। यहां उस अवधारणा का एक सरल डेमो है:

var str = "Hello World"; // For example, lets search this string,
var term = "World"; // for the term "World",
var index = str.indexOf(term); // and get its index.
if (index != -1) { // If the index is not -1 then the term was matched in the string,
  alert(index); // and we can do some work based on that logic. (6 is alerted)
}




यह सिर्फ मेरे लिए काम किया। यह उन तारों के लिए चयन करता है जिनमें "हटाया गया" शब्द नहीं है:

if (eventString.indexOf("Deleted:") == -1)



ऐसा करने के लिए एक चिकना और बेहतर तरीका है और यह (बिटवाइज नोट) ऑपरेटर का उपयोग कर रहा है।

if(~"John".indexOf("J")) {
  alert("Found")
}
else {
  alert("Not Found");
}

बिटवाईव "x" में परिवर्तित नहीं होता है - (x + 1) तो, यदि एक्स इंडेक्स से विधि -1 से बाहर हो जाता है। तो इसे - (-1 + 1) = -0 में परिवर्तित किया जाएगा जो एक झूठा मूल्य है।




उदाहरण

var a  = "Test String";

if(a.search("ring")!=-1){
     //exist 
} else {
     //not found 
}






किसी प्रकार के वैध समाधान एकत्र करने के लिए:

var stringVariable = "some text";
var findString = "text";

//using `indexOf()`
var containResult1 = stringVariable.indexOf(findString) != -1;
document.write(containResult1+', ');

//using `lastIndexOf()`
var containResult2 = stringVariable.lastIndexOf(findString) != -1;
document.write(containResult2+', ');

//using `search()`
var containResult3 = stringVariable.search(findString) != -1;
document.write(containResult3+', ');
     
//using `split()`
var containResult4 = stringVariable.split(findString)[0] != stringVariable;
document.write(containResult4+'');




जावास्क्रिप्ट

 var str = "My big string contain apples and oranges";
 var n = str.indexOf("apples"); 
 alert(n); //will alert 22, -1 if not found

jQuery

  <p>My big string contain apples and oranges</p>
  alert($("p:contains(apples)")[0] != undefined); //will alert true if found



स्ट्रिंग पर अंतर्निर्मित और सरलतम यानी match() उपयोग करें। जो आप आगे देख रहे हैं उसे प्राप्त करने के लिए यह करें:

var stringData ="anyString Data";

var subStringToSearch = "any";

// This will give back the substring if matches and if not returns null
var doesContains = stringData.match(subStringToSearch);

if(doesContains !=null) {
    alert("Contains Substring");
}





Related