字符串常用方法
字符串的所有方法溜哮,都不會(huì)改變?cè)址ㄗ址牟豢勺冃裕┟ぃ僮魍瓿珊髸?huì)返回一個(gè)新的值科阎。
查找字符串
indexOf()/lastIndexOf()
獲取字符串中指定的獲取字符串中指定內(nèi)容的索引
//索引值 = str.indexOf(想要查詢的字符串);
let str = 'testtesttest';
//統(tǒng)計(jì)t出現(xiàn)的次數(shù)
let index = str.indexOf('t');
let num = 0;
while(index != -1){
num++;
index = str.indexOf('t',index+1)
}
console.log(num);
- indexOf() 是從前向后查找字符串的位置述吸。同理,lastIndexOf()是從后向前尋找锣笨◎蛎可以檢索一個(gè)字符串中是否含有指定內(nèi)容。如果字符串中含有該內(nèi)容错英,則會(huì)返回其第一次出現(xiàn)的索引入撒;如果沒(méi)有找到指定的內(nèi)容,則返回 -1椭岩。
- 這個(gè)方法還可以指定第二個(gè)參數(shù)衅金,用來(lái)指定查找的起始位置。語(yǔ)法如下
索引值 = str.indexOf(想要查詢的字符串, [起始位置]);
search()
獲取字符串中指定內(nèi)容的索引
//索引值 = str.search(想要查找的字符串);
//索引值 = str.search(正則表達(dá)式);
let str = 'testtesttest';
//查找e,字符串中有e則返回該位置的索引
let index1 = str.search('et');
let index2 = str.search('est');
console.log(index1);//-1
console.log(index2);//1
可以檢索一個(gè)字符串中是否含有指定內(nèi)容氮唯。如果字符串中含有該內(nèi)容鉴吹,則會(huì)返回其第一次出現(xiàn)的索引;如果沒(méi)有找到指定的內(nèi)容惩琉,則返回 -1豆励。
includes()
判斷字符串中是否包含指定的內(nèi)容
//布爾值 = str.includes(想要查找的字符串, [position]);
let str = 'testtesttest';
let res1 = str.includes('tt',12);//true
let res2= str.includes('tt');//false
console.log(res1);
console.log(res2);
- 判斷一個(gè)字符串中是否含有指定內(nèi)容。如果字符串中含有該內(nèi)容瞒渠,則會(huì)返回 true良蒸;否則返回 false。
- 參數(shù)中的 position:如果不指定伍玖,則默認(rèn)為0嫩痰;如果指定,則規(guī)定了檢索的起始位置窍箍。
startsWith()
字符串是否以指定的內(nèi)容開頭
//布爾值 = str.startsWith(想要查找的內(nèi)容, [position]);
let str = 'testtesttest';
let res = str.endsWith('e',6);
console.log(res);
判斷一個(gè)字符串是否以指定的子字符串開頭串纺。如果是,則返回 true椰棘;否則返回 false纺棺。
參數(shù)中的position
- 如果不指定,則默認(rèn)為0邪狞。
- 如果指定祷蝌,則規(guī)定了檢索的起始位置。檢索的范圍包括:這個(gè)指定位置開始帆卓,直到字符串的末尾巨朦。即:[position, str.length)
endsWith()
字符串是否以指定的內(nèi)容結(jié)尾
布爾值 = str.endsWith(想要查找的內(nèi)容, [position]);
判斷一個(gè)字符串是否以指定的子字符串結(jié)尾。如果是剑令,則返回 true糊啡;否則返回 false。
參數(shù)中的position
- 如果不指定尚洽,則默認(rèn)為 str.length。
- 如果指定靶累,則規(guī)定了檢索的結(jié)束位置腺毫。檢索的范圍包括:從第一個(gè)字符串開始,直到這個(gè)指定的位置挣柬。即:[0, position)
tartsWith() 和 endsWith()這兩個(gè)方法潮酒,他們的 position 的含義是不同的
獲取指定位置的字符
charAt(index)
字符 = str.charAt(index);
返回字符串指定位置的字符。這里的 str.charAt(index)和str[index]的效果是一樣的邪蛔。注意:字符串中第一個(gè)字符的下標(biāo)是 0急黎。如果參數(shù) index 不在 [0, string.length) 之間,該方法將返回一個(gè)空字符串。
charCodeAt(index)
字符 = str.charCodeAt(index);
返回字符串指定位置的字符的 Unicode 編碼勃教。不會(huì)修改原字符串淤击。
字符串截取
slice()
//新字符串 = str.slice(開始索引, 結(jié)束索引); //兩個(gè)參數(shù)都是索引值。包左不包右故源。
let str = 'testtesttest';
//不傳參數(shù)相當(dāng)于截取整個(gè)字符串污抬,即字符串的重新賦值
let str1 = str.slice();
console.log(str1);//testtesttest
//截取[1,4)
let str2 = str.slice(1, 4);
console.log(str2);//est
//截取從索引為1的位置開始,直到結(jié)束
let str3 = str.slice(1);
console.log(str3);//esttesttest
//表示從倒數(shù)第2個(gè)開始绳军,截取到最后印机。
let str4 = str.slice(-2);
console.log(str4);//st
//表示從第一個(gè)截取到倒數(shù)第一個(gè)
let str5 = str.slice(0, -1);
console.log(str5);//testtesttes
//開始索引大于結(jié)束索引,返回空
let str6 = str.slice(2, 1);
console.log(str6);//null
substring()
新字符串 = str.substring(開始索引, 結(jié)束索引); //兩個(gè)參數(shù)都是索引值门驾。包左不包右射赛。
從字符串中截取指定的內(nèi)容。和slice()類似奶是。
substring()和slice()是類似的楣责。但不同之處在于:
- substring()不能接受負(fù)值作為參數(shù)。如果傳遞了一個(gè)負(fù)值诫隅,則默認(rèn)使用 0腐魂。
- substring()還會(huì)自動(dòng)調(diào)整參數(shù)的位置,如果第二個(gè)參數(shù)小于第一個(gè)逐纬,則自動(dòng)交換蛔屹。比如說(shuō), substring(1, 0)相當(dāng)于截取的是第一個(gè)字
substr()
字符串 = str.substr(開始索引, 截取的長(zhǎng)度);
字符串中截取指定的內(nèi)容豁生。不會(huì)修改原字符串兔毒,而是將及截取到的內(nèi)容返回。注意甸箱,這個(gè)方法的第二個(gè)參數(shù)截取的長(zhǎng)度育叁,不是結(jié)束索引。
參數(shù)說(shuō)明:
- (2,4) 從索引值為 2 的字符開始芍殖,截取 4 個(gè)字符豪嗽。
- (1) 從指定位置開始,截取到最后豌骏。
- (-2) 從倒數(shù)第幾個(gè)開始龟梦,截取到最后.
String.fromCharCode()
String.fromCharCode():根據(jù)字符的 Unicode 編碼獲取字符。
let str = String.fromCharCode('115');
concat()
字符串連接
新字符串 = str1.concat(str2)窃躲; //連接兩個(gè)字符串
split()
字符串轉(zhuǎn)換為數(shù)組
//新的數(shù)組 = str.split(分隔符);
let str = 'testtesttest';
let strNew = str.split('e');
console.log(strNew);// ["t", "stt", "stt", "st"]
通過(guò)指定的分隔符计贰,將一個(gè)字符串拆分成一個(gè)數(shù)組。不會(huì)改變?cè)址?/p>
replace()
新的字符串 = str.replace(被替換的字符蒂窒,新的字符);
這個(gè)方法躁倒,默認(rèn)只會(huì)替換第一個(gè)被匹配到的字符荞怒。
repeat()
newStr = str.repeat(重復(fù)的次數(shù));
將字符串重復(fù)指定的次數(shù)。會(huì)返回新的值秧秉,不會(huì)修改原字符串褐桌。
trim()
去除字符串前后的空白。
toLowerCase()和toUpperCase()
toLowerCase()轉(zhuǎn)換成小寫福贞,toUpperCase()轉(zhuǎn)換成大寫
大小寫轉(zhuǎn)換
let str = 'testTESTtest';
let strNew ='';
//遍歷數(shù)組
for(let i = 0;i<str.length;i++){
let ch = str.charAt(i)
let chUn = ch.charCodeAt();
//判斷字符是原來(lái)是大寫還是小寫
if(chUn>='65' && chUn <= '90'){
//大寫轉(zhuǎn)小寫
ch = ch.toLowerCase();
}else if(chUn>='97' && chUn <= '122'){
//小寫轉(zhuǎn)大寫
ch = ch.toUpperCase();
}else{
console.log('含有非字符');
break;
}
//將轉(zhuǎn)換后的字符拼接成新的字符串
strNew = strNew+ch;
}
console.log(strNew);//TESTtestTEST