字串操作方法總結
1. 查詢類方法
- indexOf()
stringObject.indexOf(searchvalue,fromindex)
indexOf()用來檢索指定的字串值在字串中首次出現的位置。它可以接收兩個引數,searchvalue表示要查詢的字串;fromindex表示查詢的開始位置,省略的話則從開始位置進行檢索。
var str = 'abcdeabcde';
console.log(str.indexOf('a')); // 返回0
console.log(str.indexOf('a', 3)); // 返回5
console.log(str.indexOf ('bc')); // 返回1
- lastindexOf()
stringObject.lastIndexOf(searchvalue,fromindex)
lastIndexOf()語法與indexOf()類似,它返回的是一個指定的子字串值最後出現的位置,其檢索順序是從後向前
注意:indexOf()和lastindexOf()如果要檢索的字串值沒有出現,則該方法返回 -1。
var str = 'abcdeabcde';
console.log(str.lastIndexOf('a')); // 返回5
console.log(str.lastIndexOf('a' , 3)); // 返回0 從索引第3的位置往前檢索
console.log(str.lastIndexOf('bc')); // 返回6
- search()
stringObject.search(substr)
stringObject.search(regexp)
search()方法用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串。它會返回第一個匹配的子字串的起始位置
注意:如果沒有匹配的,則返回-1
var str = 'abcDEF';
console.log(str.search('c')); //返回2
console.log(str.search ('d')); //返回-1
console.log(str.search(/d/i)); //返回3
- match()
stringObject.match(substr)
stringObject.match(regexp)
match()方法可在字串內檢索指定的值,或找到一個或多個正則表示式的匹配。
如果引數中傳入的是子字串或是沒有進行全域性匹配 的正則表示式,那麼match()方法會從開始位置執行一次匹配,如果沒有匹配到結果,則返回null。否則則會返回一個數組,該陣列的第0個元素存放的 是匹配文字,除此之外,返回的陣列還含有兩個物件屬性index和input,分別表示匹配文字的起始字元索引和stringObject 的引用(即原字串)。
var str = '1a2b3c4d5e';
console.log(str.match('h')); //返回null
console.log(str.match('b')); //返回["b", index: 3, input: "1a2b3c4d5e"]
console.log(str.match(/b/)); //返回["b", index: 3, input: "1a2b3c4d5e"]
如果引數傳入的是具有全域性匹配的正則表示式,那麼match()從開始位置進行多次匹配,直到最後。如果沒有匹配到結果,則返回null。否則則會返回一個數組,陣列中存放所有符合要求的子字串,並且沒有index和input屬性。
var str = '1a2b3c4d5e';
console.log(str.match(/h/g)); //返回null
console.log(str.match(/\d/g)); //返回["1", "2", "3", "4", "5"]
2. 擷取類方法
- substring()
stringObject.substring(start,end)
var str = 'abcdefg';
console.log(str.substring(1, 4)); //返回bcd
console.log(str.substring(1)); //返回bcdefg
console.log(str.substring(-1)); //返回abcdefg,傳入負值時會視為0
- slice()
stringObject.slice(start,end)
var str = 'abcdefg';
console.log(str.slice(1, 4)); //返回bcd
console.log(str.slice(-3, -1)); //返回ef
console.log(str.slice(1, -1)); //返回bcdef
console.log(str.slice(-1, -3)); //返回空字串,若傳入的引數有問題,則返回空
- substr()
stringObject.substr(start,length)
substr()方法可在字串中抽取從start下標開始的指定數目的字元。其返回值為一個字串,包含從 stringObject的start(包括start所指的字元)處開始的length個字元。如果沒有指定 length,那麼返回的字串包含從start到stringObject的結尾的字元。另外如果start為負數,則表示從字串尾部開始算起。
var str = 'abcdefg';
console.log(str.substr(1, 3)) //返回bcd
console.log(str.substr(2)) //返回cdefg
console.log(str.substr(-2, 4)) //返回fg,目標長度較大的話,以實際擷取的長度為準
3. 其他方法
- replace()
replace()方法用來進行字串替換操作,它可以接收兩個引數,前者為被替換的子字串(可以是正則),後者為用來替換的文字
var str = 'abcdeabcde';
console.log(str.replace('a', 'A'));
console.log(str.replace(/a/, 'A'));
- split()
split()方法用於把一個字串分割成字串陣列。第一個引數separator表示分割位置(參考符),第二個引數howmany表示返回陣列的允許最大長度(一般情況下不設定)。
var str = 'a|b|c|d|e';
console.log(str.split('|')); //返回["a", "b", "c", "d", "e"]
console.log(str.split('|', 3)); //返回["a", "b", "c"]
console.log(str.split('')); //返回["a", "|", "b", "|", "c", "|", "d", "|", "e"]
- toLowerCase()和toUpperCase()
stringObject.toLowerCase()
stringObject.toUpperCase()
toLowerCase()方法可以把字串中的大寫字母轉換為小寫,toUpperCase()方法可以把字串中的小寫字母轉換為大寫。