JavaScript >> Javascript 文檔 >  >> Tags >> string

在 JavaScript 中使用 indexOf() 檢查字符串是否包含子字符串

在 JavaScript 中檢查字符串是否包含子字符串:

  1. 調用String.indexOf() 給定字符串上的方法,將其作為參數傳遞給子字符串。
  2. 比較返回值和-1 .
  3. 如果返回值不等於-1 ,字符串包含子字符串。
const str = 'React is a popular JavaScript library.'
const substr = 'JavaScript'

const index = str.indexOf(substr)
console.log(index) // 19

if (str.indexOf(substr) !== -1) {
  console.log(`String contains "${substr}"`)
} else {
  console.log(`String does not contain "${substr}"`)
}
// String contains "JavaScript"

String.indexOf(searchValue[, fromIndex]) 方法有兩個參數:

  1. searchValue — 表示要在此字符串中搜索的值的字符串。如果沒有明確指定字符串,searchValue 將默認為 undefined 並將在當前字符串中搜索該值。
  2. fromIndex — 一個可選整數,表示開始搜索的索引。默認值為 0 .

String.indexOf() 方法返回第一次出現 searchValue 的索引 在字符串中,或​​ -1 如果沒有找到。如果一個空字符串作為 searchValue 傳遞 ,它將匹配 0 之間的任何索引 和 str.length .

再舉一個例子:

const str = 'React is a popular JavaScript library.'

str.indexOf('React') // 0
str.indexOf('Preact') // -1
str.indexOf('React', 5) // -1
str.indexOf('') // 0
str.indexOf('', 5) // 5

String.indexOf() 方法區分大小寫,這意味著以下表達式的計算結果為 -1

'JavaScript'.indexOf('script')    // -1
'JavaScript'.indexOf('SCRIPT')    // -1

如果存在多個匹配的子字符串,String.indexOf() 將返回第一次出現的第一個位置:

'Java, Java, Java!'.indexOf('Java')   // 0

0 ,由 String.indexOf() 返回 , 方法不計算為 true . -1 也是如此 ,其計算結果不為 false 要么。

因此,如果您讓等號運算符顯式驗證字符串是否存在,您可能會看到不正確的結果。

這是一個有趣的例子:

const str = 'Apple is the manufacturer of iPhone X.'

if(str.indexOf('Apple')) {
    console.log('Awesome!')
}

if(str.indexOf('Samsung')) {
    console.log('Good!')
}

在上面的代碼中,第一個 if 即使單詞 Apple 也不會執行條件 確實存在於字符串中。同樣,第二個if 條件將評估為 true 雖然字符串不包含單詞 Samsung .

因此,當檢查一個字符串是否包含另一個子字符串時,正確的檢查方法是:

if (str.indexOf('Apple') !== -1) {
    console.log('Awesome!')
}

if (str.indexOf('Samsung') !== -1) {
    console.log('Good!')
}

閱讀本文以了解可用於檢查字符串中是否存在子字符串的其他 JavaScript 函數。


Tutorial JavaScript 教程
  1. 讓你的 Monorepo 起步的 5 種資源

  2. 全棧開發者詞彙(Pt.2,更高級)

  3. 正則表達式 - 分組和字符串方法

  4. 動畫僅適用於第一次單擊按鈕

  5. JavaScript MaxChar 算法

  6. 如何通過 GraphQL 中的鏈接引用過濾條目

  7. 將日期和時間轉換為 Unix 時間戳

  1. 如何在 Visual Studio Code 中使用 TypeScript

  2. 聚合錯誤

  3. JavaScript 變量——var、const 和 let 的初學者指南

  4. 如何從 Strapi CMS 觸發 Next.js 重建

  5. 如何從矩形點計算旋轉角度?

  6. Javascript 中的回調函數、promise 和 async/await 有什麼區別?

  7. 讓我們構建一個實際可用的數字鼓組🥁,您可以使用鍵盤演奏⌨️🤘

  1. Cantara 💙 - 在幾分鐘內創建無服務器全棧 React 應用程序的 CLI 工具

  2. 一種學習 NativeScript 佈局的新方法

  3. 如何輕鬆創建漂亮的 SVG 動畫

  4. 使用 Node.js 進行 HTTP/2 服務器推送