1.獲取字串指定位置的值
charAt()和charCodeAt()都可以透過索引來獲取指定位置的值。
tip:你可以使用下標獲取某個位置的字元,但如果是下標越界就會返回undefined,charAt返回空字串
- charAt()方法獲取到的是指定位置的字元
- charCodeAt()是獲取指定位置字元的Unicode值
2.檢索字串是否包含特定序列
- indexof()查詢某個字串,有則返回第一個匹配到的位置,沒有返回-1,第二個引數是開始檢索的位置
- lastIndexof()查詢某個字串,有則返回最後個匹配到的位置,沒有返回-1,第二個引數是從結尾開始檢索的位置
- includes()判斷是否包含某個字串,有則返回true,沒有返回false,第二個引數是開始檢索的位置
- startsWith()/endsWith() 檢測字串是否以指定的字串開始/結束
3.字串擷取
- slice()推薦使用,可以用負數下標
'abcd'.slice(1,2) // b
'abcd'.slice(1) //bcd
'abcd'.slice(-4,-1) //abc
'abcd'.slice(-5,-1)//abc
- substring(start,length) 次推薦, 用於在字串中抽取從開始下標開始的指定數目的字元
let str = "Hello, World!";
let substr = str.substring(0, 5); // 擷取從索引 0 到索引 5 之間的字元 左閉右開
console.log(substr); // "Hello"
// 傳入的引數如果有負數會被視為 0
let substr2 = str.substring(-5, 10);
console.log(substr2); // "Hello, Wo"(負數會被當作 0 處理)
- substr()不推薦
4.字串模式匹配
-
replaceAll()與
replace()
的全域性標誌g
功能相似 -
replace() 該方法用於在字串中用一些字元替換另一些字元,或替換一個與正規表示式匹配的子串
let str = "abcdef";
str.replace("c", "z") // 輸出結果:abzdef
let str="Mr Blue has a blue house and a blue car";
str.replace(/blue/gi, "red"); // 輸出結果:'Mr red has a red house and a red car'
// 全域性匹配g i不區分大小寫
- match()檢索字串中與正規表示式匹配的內容,並返回一個陣列。如果沒有匹配項,則返回
null
。
let str = "The quick brown fox jumps over the lazy dog";
let result = str.match(/the/gi); // 忽略大小寫的全域性匹配
let result = str.match(/the/i); // 忽略大小寫的全域性匹配
console.log(result); // ["The", "the"]
console.log(result); //[
"the"
]
matchAll()
方法(ES2020 引入)用於返回字串中所有與正規表示式匹配的內容。它會返回一個迭代器(Iterator),每個元素是一個匹配結果的陣列
let str = "cat and cat and cat";
let result = str.matchAll(/cat/g);
for (const match of result) {
console.log(match);
}
// Output:
// ["cat", index: 0, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 8, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 17, input: "cat and cat and cat", groups: undefined]
- exec()用於執行一個匹配,並返回匹配到的內容。如果沒有匹配,返回
null
。與match()
不同的是,exec()
可以返回更多的詳細資訊(如捕獲的組)
let regex = /(\d+)-(\d+)-(\d+)/; // 匹配日期格式
let str = "2024-11-14";
let result = regex.exec(str);
console.log(result); // ["2024-11-14", "2024", "11", "14"]
test()
方法用於判斷字串是否符合正規表示式模式。如果匹配,返回true
,否則返回false
。
let regex = /fox/;
let result = regex.test("The quick brown fox");
console.log(result); // true
- search()
方法用於查詢字串中第一次出現匹配正規表示式的位置。如果匹配成功,返回匹配的第一個位置,否則返回
-1
let str = "The quick brown fox";
let index = str.search(/brown/);
console.log(index); // 10
-
padStart用於頭部補全。該方法有兩個引數,其中第一個引數是一個數字,表示字串補齊之後的長度;第二個引數是用來補全的字串。
如果原字串的長度,等於或大於指定的最小長度,則返回原字串
'x'.padStart(1, 'ab') // 'x' 'x'.padStart(33, 'ab') // 'ababababababababababababababababx' //如果省略第二個引數,預設使用空格補全長度: 'x'.padStart(4) // ' x'
判斷一個陣列是不是包含某個值常用方法
1.find/findIndex
const list = [
{id:1,name:'JK'},
{id:2,name:'MM'},
{id:3,name:'SR'}
]
list.find((item)=>item.name==="SB") // 返回這個物件 沒匹配就返回list.findIndex((item)=>item.name==="SB") // 返回這個物件的下標 沒匹配就-1
2.includes
list.some((item)=>item.name==="SB") // 返回布林值
3.reduce
list.reduce((pre,curr)=>item.name==="SB",false) // 返回布林值