javascript檢查字元 如何檢查字符串是否包含JavaScript中的子字符串?




15 Answers

您可以使用以下語句輕鬆地將contains方法添加到String:

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.contains()方法,但似乎沒有。

檢查這個的合理方法是什麼?




ES6中有一個string.includes

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

請注意,您可能需要加載es6-shim或類似內容才能在舊版瀏覽器上使用它。

require('es6-shim')



您可以使用JavaScript search()方法。

語法是: string.search(regexp)

它返回匹配的位置,如果未找到匹配則返回-1。

參見那裡的例子: jsref_search

您不需要復雜的正則表達式語法。 如果您不熟悉它們,可以使用簡單的st.search("title") 。 如果您希望測試不區分大小寫,那麼您應該進行st.search(/title/i)




如果你正在尋找一種替代方法來編寫醜陋的-1檢查,那麼你可以先添加一個〜代替。

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

Joe Zimmerman - 你會看到使用~on -1將它轉換為0.數字0是一個假值,意味著它在轉換為布爾值時會計算為false。 這可能看起來不像是一個很大的洞察力,但是當找不到查詢時,記住像indexOf這樣的函數將返回-1。 這意味著不要寫類似於此的東西:

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

您現在可以在代碼中使用更少的字符,因此您可以像這樣編寫它:

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

更多細節在這裡




在JavaScript中編寫contains方法的常用方法是:

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

按位求反運算符( ~ )用於將-1變為0 (假),所有其他值將為非零(真值)。

double boolean negation運算符用於將數字轉換為布爾值。




您可以使用經過充分測試和記錄的庫,而不是使用網絡上此處和此處找到的代碼段。 我建議的兩個選項:

第一個選項:使用Lodash :它有一個includes方法:

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

Lodash是npm最受歡迎的javascript庫依賴項,並且有大量方便的javascript實用程序方法。 因此,對於許多項目,無論如何你都會想要這個;-)

第二個選項:或者使用Underscore.string :它有一個include方法:

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

這裡是Underscore.string的描述,它只增加了9kb,但是為您提供了經過充分測試和記錄的庫具有over copy'n'paste代碼片段的所有優點:

Underscore.string是用於使用字符串進行舒適操作的JavaScript庫,受Prototype.js,Right.js,Underscore和漂亮的Ruby語言啟發的Underscore.js的擴展。

Underscore.string為您提供了幾個有用的函數:capitalize,clean,includes,count,escapeHTML,unescapeHTML,insert,splice,startsWith,endsWith,titleize,trim,truncate等。

請注意,Underscore.string受Underscore.js的影響,但可以在沒有它的情況下使用。

最後不是最少:使用JavaScript版本ES6內置includes方法:

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

大多數現代瀏覽器已經支持它,請關注ES6兼容性表







您正在尋找.indexOf String.prototype.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)



有一種更流暢,更好的方法,它使用(BitWise NOT)運算符。

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

按位不將“x”轉換為 - (x + 1)所以,如果x從indexOf方法變為-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+'');




JavaScript的

 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