Javsscript:字符串相關(guān)方法整理

字符串是只讀的膜楷,所以對(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ì)返回捕獲組蝇恶,indexinput也不會(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])

提取從indexStartindexEnd前一個(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()

去除字符串頭尾空格经柴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狸窘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坯认,更是在濱河造成了極大的恐慌翻擒,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牛哺,死亡現(xiàn)場(chǎng)離奇詭異陋气,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)引润,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門巩趁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人椰拒,你說(shuō)我怎么就攤上這事晶渠』思裕” “怎么了燃观?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)便瑟。 經(jīng)常有香客問(wèn)我缆毁,道長(zhǎng),這世上最難降的妖魔是什么到涂? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任脊框,我火速辦了婚禮颁督,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浇雹。我一直安慰自己沉御,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布昭灵。 她就那樣靜靜地躺著吠裆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烂完。 梳的紋絲不亂的頭發(fā)上试疙,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音抠蚣,去河邊找鬼祝旷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嘶窄,可吹牛的內(nèi)容都是我干的怀跛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼柄冲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼敌完!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起羊初,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滨溉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后长赞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦攒,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年得哆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脯颜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贩据,死狀恐怖栋操,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饱亮,我是刑警寧澤矾芙,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站近上,受9級(jí)特大地震影響剔宪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一葱绒、第九天 我趴在偏房一處隱蔽的房頂上張望感帅。 院中可真熱鬧,春花似錦地淀、人聲如沸失球。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)她倘。三九已至,卻和暖如春作箍,著一層夾襖步出監(jiān)牢的瞬間硬梁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工胞得, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荧止,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓阶剑,卻偏偏與公主長(zhǎng)得像跃巡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牧愁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容