因?yàn)殛P(guān)于JavaScript中的字符串(String類型)的操作經(jīng)常是忘記或者是混淆了窄绒,所以今天借著這個(gè)機(jī)會(huì)進(jìn)行總結(jié)一番沐悦。
String類型都有valueOf()成洗,toLocaleString(),toString()方法藏否,都返回對(duì)象所表示的基本字符串瓶殃。String類型都有一個(gè)length屬性,表示字符串的長(zhǎng)度
1. 字符方法
-
charAt()和charCodeAt()
這兩個(gè)方法都接受一個(gè)基于0的字符位置的參數(shù)副签。
charAt()方法以單字符串的形式返回給定位置的那個(gè)字符遥椿。
var str = 'hello world'
console.log(str.charAt(1)) //e
charCodeAt()返回的是該位置的字符串編碼。
var str = 'hello world'
console.log(str.charCodeAt(1)) //101
TIP: charCodeAt和charAt中如果傳入的參數(shù)為負(fù)數(shù)或者大于該字符串的長(zhǎng)度淆储,charAt()返回的是空字符("")冠场,charCodeAt()返回的是NAN。
2. 字符串操作方法
-
concat()
用于將一個(gè)或者多個(gè)字符串拼接起來(lái)得到一個(gè)新的字符串本砰。并不改變?cè)瓉?lái)的字符串碴裙。
concat()可以接受任意多個(gè)參數(shù),也就是可以拼接任意多個(gè)字符串。
var str = 'hello '
var res = str.concat('world', '!')
console.log(res) //hello world
console.log(str) //hello
TIP: concat中傳入的參數(shù)如果是非字符串舔株,則會(huì)先調(diào)用toString方法嘗試轉(zhuǎn)換成字符串然后進(jìn)行拼接
-
slice() substr() substing()
以上三個(gè)方法都會(huì)返回被操作字符串的子字符串莺琳,而且都會(huì)接受一個(gè)或者兩個(gè)參數(shù)。
第一個(gè)參數(shù)指定子字符串的開(kāi)始位置督笆,第二個(gè)參數(shù)表示子字符串到哪里結(jié)束芦昔。
slice()和substring()的第二個(gè)參數(shù)指定的是子字符串最后一個(gè)字符串后面的位置。
substr()指定的是返回的字符串個(gè)數(shù)娃肿。
以上三個(gè)方法和concat()不會(huì)修改字符串本身的值咕缎,只會(huì)返回一個(gè)基本類型的字符串。
slice()方法會(huì)將傳入的負(fù)值與字符串的長(zhǎng)度相加料扰。substr()方法將負(fù)的第一個(gè)參數(shù)加上字符串的長(zhǎng)度凭豪,而負(fù)的第二個(gè)參數(shù)轉(zhuǎn)為0。substring()會(huì)將所有負(fù)值參數(shù)都轉(zhuǎn)換為0晒杈,如果第二個(gè)參數(shù)比第一個(gè)大的話嫂伞,那么會(huì)將兩個(gè)參數(shù)位置進(jìn)行交換
var str = 'hello world'
str.slice(3) // 'lo world'
str.substring(3) // 'lo world'
str.substr(3) // 'lo world'
str.slice(3, 7) //'lo w'
str.substring(3, 7) //'lo w'
str.substring(3, 7) //'lo worl'
var str = 'hello world'
str.slice(-3) //'rld' 從后往前數(shù)
str.substring(-3) //'hello world',會(huì)轉(zhuǎn)為0拯钻,然后截取到最后就返回整個(gè)字符串了
str.substr(-3) //'rld',第一個(gè)參數(shù)從后往前數(shù)
str.slice(3, -4)// 'lo w',若第二個(gè)參數(shù)小于第一個(gè)參數(shù)帖努,則返回空字符串
str.substring(3, -4) //'hel', 負(fù)數(shù)會(huì)轉(zhuǎn)為0,然后交換0和3的位置
str.substr(3, -4) // ""會(huì)將負(fù)數(shù)轉(zhuǎn)為0粪般,然后如果第二個(gè)小于第一個(gè)則會(huì)返回空字符串
3. 字符串位置方法
-
indexOf() lastIndexOf()
這兩個(gè)方法都是從一個(gè)字符串中搜索出給定的子字符串拼余,然后返回子字符串的位置。如果沒(méi)有找到該子字符串則返回-1亩歹。
這兩個(gè)方法的區(qū)別在于indexOf()從字符串的開(kāi)頭向后搜索子字符串匙监,lastIndexOf()方法是從字符串的末尾進(jìn)行搜索。
var str = 'hello world'
console.log(str.indexOf('o')) //4
console.log(str.lastIndexOf('o')) //7
indexOf()和lastIndexOf()還可以接受第二個(gè)參數(shù)表示從第幾位進(jìn)行搜索小作。
-
trim()方法
該方法會(huì)創(chuàng)建一個(gè)字符串的副本亭姥,刪除前置以及后綴的所有空格,然后返回結(jié)果顾稀。
var str = ' hello world '
console.log(str.trim()) //'hello world'
toLowerCase(), toLocaleLowerCase(), toUpperCase(), toLocaleUppercase()
以上顧名思義是對(duì)字符串進(jìn)行大小寫(xiě)的轉(zhuǎn)換达罗,特殊的是toLocaleLowerCase(),toLocaleUpperCase()是針對(duì)特定地區(qū)的實(shí)現(xiàn)静秆。所以一般在不知道在哪種語(yǔ)言的環(huán)境中氮块,使用針對(duì)地區(qū)的方法更精確一點(diǎn)。match()
該方法與RegExp的exec()方法相同诡宗。
該方法接受一個(gè)參數(shù),要么是一個(gè)正則表達(dá)式击儡,要么是一個(gè)RegExp對(duì)象塔沃。
var str = 'cat, bat, sat, fat'
var pattern = /.at/
var matches = str.match(pattern)
console.log(matches.index) //0
console.log(matches[0]) //'cat'
console.log(pattern.lastIndex) // 0
如上,match()方法返回一個(gè)數(shù)組。
-
search()
該方法和match()方法的參數(shù)相同(字符串或者是RegExp對(duì)象指定的正則表達(dá)式)蛀柴。
該方法返回字符串中第一個(gè)匹配項(xiàng)的索引螃概,如果沒(méi)有找到匹配項(xiàng)則返回-1。
var test = 'cat, bat, sat, fat'
var pos = test.search(/at/)
console.log(pos) // 1
-
replace()
該方法可以用來(lái)進(jìn)行替換字符串鸽疾,方法可以接受兩個(gè)參數(shù)吊洼。
第一個(gè)參數(shù)可以是一個(gè)正則表達(dá)式或者是一個(gè)字符串,第二個(gè)參數(shù)可以是一個(gè)字符串或者是一個(gè)函數(shù)制肮。
如果第一個(gè)是參數(shù)是一個(gè)字符串冒窍,那么只會(huì)替換第一個(gè)子字符串,如想要替換所有的子字符串豺鼻,那么需要提供一個(gè)正則表達(dá)式综液,并且需要指定全局。
var text = 'cat, bat, sat, fat'
var res = text.replace('at', 'ond')
console.log(res) // 'cond, bat, sat, fat'
res = text.replace(/at/g, ''ond")
console.log(res) // "cond, bond, sond, fond"
split()
該方法大家應(yīng)該熟悉儒飒,會(huì)根據(jù)指定的分隔符將一個(gè)字符串分割成多個(gè)子字符串谬莹,然后組成一個(gè)數(shù)組。localeCompare()
該方法是比較兩個(gè)字符串桩了。
如果字符串在字母表中應(yīng)該排在字符串參數(shù)之前附帽,則返回一個(gè)負(fù)數(shù)。
如果字符串等于字符串參數(shù)則返回0井誉。
如果字符串在字母表中應(yīng)該排在字符串參數(shù)之后蕉扮,則返回一個(gè)正數(shù)。fromCharCode()
該方法是String構(gòu)造函數(shù)的一個(gè)靜態(tài)方法送悔。該方法接受一個(gè)或者多個(gè)字符串編碼慢显,然后轉(zhuǎn)換為一個(gè)字符串。
String.fromCharCode(104, 101, 108, 108, 111) //hello
以上就是關(guān)于JavaScript中字符串的一些基本操作欠啤。