字符串是只讀的膜楷,所以對(duì)字符串的操作都不會(huì)改變?cè)址肓螅际欠祷匦伦址?/strong>
以var str = 'xueying'
為例痊末。
1.str.charAt(index)
返回index處的字符
str.charAt(1) // u
2. str.charCodeAt(index)
返回index處字符的Unicode編碼
str.charCodeAt(1) // 117
3. str.codePointAt(index) 未整理
效果貌似和String.prototype.charCodeAt(index)是一樣的
4. str1.concat(str2)
合并兩個(gè) str1 和 str2
var str1 = 'abc'
var str2 = 'def'
str1.concat(str2) // abcdef
5. str.includes(string)
str中是否包含string
str.includes('xue') // true
str.includes('xx') // false
6.str.endsWith(string)
str是否以string結(jié)尾
str.endsWith('ng') // true
str.endsWith('x') // false
7. str.startsWith(string)
str是否以string開頭
str.startsWith('xue') // true
8. str.indexOf(string)
返回string在str中的下標(biāo),如果沒(méi)有則返回 -1
str.indexOf('xue') // 0
str.indexOf('e') // 2
str.indexOf('xx') // -1
9. str.lastIndexOf(string)
返回 string 在 str 中最后出現(xiàn)的位置松申,如果沒(méi)有出現(xiàn)則返回 -1
var name = 'waffle'
name.lastIndexOf('f') // 3
name.indexOf('f') // 2
10. str.match(regexp)
regexp為一個(gè)正則表達(dá)式。
(1)不包含/g
時(shí):
其結(jié)果和RegExp.prototype.exec()
的返回值一樣俯逾。
是一個(gè)數(shù)組贸桶。數(shù)組第一項(xiàng)為匹配到的字符串。后面幾項(xiàng)是圓括號(hào)捕獲到的分組匹配到的字符串桌肴。
這個(gè)數(shù)組還有兩個(gè)屬性:一個(gè)是index
皇筛,即匹配到的字符串的下標(biāo)。第二個(gè)是input
坠七,即進(jìn)行匹配的字符串(也就是原始字符串)水醋。
如果想去除某個(gè)圓括號(hào)的捕獲功能旗笔,可在左括號(hào)后面加上?:
str.match(/^xue/) // ["xue", index: 0, input: "xueying"]
str.match(/^x(ue)/) // ["xue", "ue", index: 0, input: "xueying"]
str.match(/^x(?:ue)/) // ["xue", index: 0, input: "xueying"]
(2)含/g
時(shí):
返回一個(gè)數(shù)組,數(shù)組中包含著被匹配到的字符串拄踪,不會(huì)返回捕獲組蝇恶,index
和input
也不會(huì)被返回。
str.match(/^xue/g) // ["xue"]
str.match(/^x(ue)/g) // ["xue"]
str.match(/^x(?:ue)/g) // ["xue"]
11. str.repeat(count)
返回一個(gè)新字符串惶桐,這個(gè)新字符串是原字符串重復(fù)count
次撮弧。
count
非整數(shù)時(shí)會(huì)取整數(shù)部分。
count
為負(fù)數(shù)時(shí)會(huì)報(bào)錯(cuò)姚糊』哐埽或者把0作為除數(shù)也會(huì)報(bào)錯(cuò),比如1/0救恨。
count
為字符串時(shí)會(huì)嘗試轉(zhuǎn)成int舌厨,再進(jìn)行repeat。
str.repeat(2) // "xueyingxueying"
str.repeat(3.6) // "xueyingxueyingxueying"
str.repeat('1') // "xueying"
str.repeat('a') // ""
str.repeat('-1') // Uncaught RangeError: Invalid count value
12. str.replace(regexp|substr, newSubStr|function)
第一個(gè)參數(shù)是一個(gè)正則表達(dá)式或者一個(gè)子串忿薇。
第二個(gè)參數(shù)是一個(gè)新子串或者一個(gè)函數(shù)裙椭。
用第第二參數(shù)的內(nèi)容替換原始字符串中第一個(gè)參數(shù)的內(nèi)容。
// 第二個(gè)參數(shù)還可以用很多好玩的插入值
str.replace(/xue/g, '??') // "??ying"
str.replace(/xue/g, "aa$$") // "aa$ying" $$表示插入$
str.replace(/xue/g, 'aa$&') // "aaxueying" $&表示匹配的子串
str.replace(/xue/g, "aa$'") // "aayingying" $' 表示插入匹配的子串的右子串
str.replace(/xue/g, "aa$`") // "aaying" $` 表示插入匹配的子串的左子串署浩,這個(gè)例子中是空
str.replace(/x(u)(e)/g, "aa$1") // "aauying" $n表示第一個(gè)參數(shù)中正則表達(dá)式的第n個(gè)圓括號(hào)匹配到的子串揉燃,這個(gè)例子中是“u“
str.replace(/xue/g, function (substr) { // 將‘xue’倒序
return substr.split('').reverse().join('')
}) // "euxying"
第二個(gè)參數(shù)是函數(shù)的話,也有很多好玩的參數(shù):
// match:匹配到的子串筋栋,相當(dāng)于上面的$&
// p1, p2, p3...:第n個(gè)括號(hào)匹配到的子串炊汤,相當(dāng)于上面的$1, $2, $3...
// string:被匹配的原字符串,這個(gè)例子中是 'abc12345#$*%'
function replacer(match, p1, p2, p3, offset, string) {
// p1 為非數(shù)字, p2 為數(shù)字, p3非字母數(shù)字
// console.log(offset);
return [p1, p2, p3].join(' - ');
}
var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d+)([^\w]*)/g, replacer); // // ^可表示過(guò)濾
console.log(newString); // abc - 12345 - #$*%
這個(gè)例子中回調(diào)函數(shù)接受了6個(gè)參數(shù)弊攘,它們分別代表了:
match
:被匹配到的字符串子串抢腐,在這個(gè)例子中是整個(gè)字符串
p1, p2, p3
:/([^\d]*)(\d+)([^\w]*)/
中分別第一個(gè)括號(hào),第二個(gè)括號(hào)襟交、第三個(gè)括號(hào)中的正則子表達(dá)式匹配到的字符串子串迈倍,在這個(gè)例子中就是'aaa' , '12345', '$*%'
offset
:匹配到的字符子串(也就是match)的下標(biāo)(也就是第一個(gè)字符下標(biāo))
string
:調(diào)用replace的整個(gè)字符串
13. str.search(substr|regexp)
接受一個(gè)子串或者一個(gè)正則表達(dá)式。
返回第一個(gè)匹配的下標(biāo)捣域。
如果是子串啼染,和str.indexOf(substr)
并沒(méi)有什么區(qū)別。
str.search('x') // 0
str.indexOf('x') // 0
str.indexOf(/x/g) // -1 str.indexOf()不能用正則表達(dá)式
str.search(/x/g) // 0
14. str.slice(beginSlice[, endSlice])
返回一個(gè)新字符串焕梅。
從beginSlice
開始截取迹鹅,如果有endSlice
,就截取到endSlice
前面一個(gè)字符贞言。否則截取到末尾斜棚。
也就是[beginSlice
, endSlice
) 或者 [beginSlice
, str.length - 1
]
str.slice(1, 3) // "ue"
str.slice(1) // "ueying"
15. str.split(string|regexp)
以string
為分割線分割字符串。
返回一個(gè)數(shù)組,里面是被分割后到所有子串弟蚀。
str.split('') // ["x", "u", "e", "y", "i", "n", "g"]
"I'm a girl".split(' ') // ["I'm", "a", "girl"]
"Can: be: split by: regexp".split(/:\s/g) // ["Can", "be", "split by", "regexp"]
16. str.substr(start[, length])
從start
開始提取長(zhǎng)度為length
的子串脂新,沒(méi)有length
則提取到末尾。
start
為負(fù)數(shù)則表示倒數(shù)開始粗梭,比如 -3 表示倒數(shù)第三個(gè)開始争便,也就是str.length - 3
start
超出字符串最后一個(gè)字符的下標(biāo)則返回空字符串
length
為負(fù)數(shù)則返回空字符串
str.substr(2) // "eying"
str.substr(2, 3) // "eyi"
str.substr(-3) // "ing"
str.substr(-3, -4) // ""
17. str.substring(indexStart[, indexEnd])
提取從indexStart
到indexEnd
前一個(gè)字符的子串。
沒(méi)有indexEnd
則提取到末尾断医。
如果任一參數(shù)小于 0 或?yàn)?NaN
滞乙,則被當(dāng)作 0。
如果任一參數(shù)大于 stringName.length
鉴嗤,則被當(dāng)作 stringName.length
斩启。
如果 indexStart 大于 indexEnd,則 substring 的執(zhí)行效果就像兩個(gè)參數(shù)調(diào)換了一樣醉锅。例如兔簇,str.substring(1, 0) == str.substring(0, 1)。
str.substring(2) // "eying"
str.substring(2,4) // "ey"
str.substring(-1, -2) // "" 負(fù)數(shù)表示0硬耍, 所以等同于str.substring(0, 0)
str.substring(10) // ""
str.substring(2, 1) // "u" 等同于str.substring(1, 2)
18. str.toLowerCase()
字符轉(zhuǎn)化為小寫返回垄琐,返回的是一個(gè)新字符串,不會(huì)改變?cè)址?/p>
'Xueying'.toLowerCase() // "xueying"
19. str.toUpperCase()
全部轉(zhuǎn)化為大寫
20. str.trim()
去除字符串頭尾空格经柴。