JavaScript中關(guān)于字符串操作總結(jié)

因?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()
    該方法與RegExpexec()方法相同诡宗。
    該方法接受一個(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中字符串的一些基本操作欠啤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荚藻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洁段,更是在濱河造成了極大的恐慌应狱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祠丝,死亡現(xiàn)場(chǎng)離奇詭異疾呻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)写半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)岸蜗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叠蝇,你說(shuō)我怎么就攤上這事璃岳。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵铃慷,是天一觀的道長(zhǎng)单芜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)犁柜,這世上最難降的妖魔是什么洲鸠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮馋缅,結(jié)果婚禮上扒腕,老公的妹妹穿的比我還像新娘。我一直安慰自己股囊,他們只是感情好袜匿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著稚疹,像睡著了一般居灯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上内狗,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天怪嫌,我揣著相機(jī)與錄音,去河邊找鬼柳沙。 笑死岩灭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赂鲤。 我是一名探鬼主播噪径,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼数初!你這毒婦竟也來(lái)了找爱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泡孩,失蹤者是張志新(化名)和其女友劉穎车摄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仑鸥,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吮播,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眼俊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片意狠。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疮胖,靈堂內(nèi)的尸體忽然破棺而出摄职,到底是詐尸還是另有隱情誊役,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布谷市,位于F島的核電站,受9級(jí)特大地震影響击孩,放射性物質(zhì)發(fā)生泄漏迫悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一巩梢、第九天 我趴在偏房一處隱蔽的房頂上張望创泄。 院中可真熱鬧,春花似錦括蝠、人聲如沸鞠抑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搁拙。三九已至,卻和暖如春法绵,著一層夾襖步出監(jiān)牢的瞬間箕速,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工朋譬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盐茎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓徙赢,卻偏偏與公主長(zhǎng)得像字柠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狡赐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • Javascript有很多字符串的方法窑业,有的人有W3C的API,還可以去MDN上去找阴汇,但是我覺(jué)得API上說(shuō)的不全数冬,...
    頑皮的雪狐七七閱讀 2,143評(píng)論 0 2
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,219評(píng)論 0 4
  • Javascript數(shù)組基本操作 Javascript中的數(shù)組是一種特殊的對(duì)象,用來(lái)表示偏移量的索引是該對(duì)象的屬性...
    haveSnap閱讀 277評(píng)論 0 0
  • 自從貝貓上了兩歲搀庶,就展現(xiàn)了超強(qiáng)的行動(dòng)力拐纱,說(shuō)一不二,干什么都著急哥倔。想出門(mén)去玩秸架,連穿條褲子的時(shí)間都等不及。想要喝牛奶咆蒿,...
    妮秋兒閱讀 452評(píng)論 0 0
  • 阿四走了很遠(yuǎn)很遠(yuǎn)的路东抹,他很累蚂子,但是不敢停下,因?yàn)榍叭账诜窖蛏秸腥橇艘换锉I匪缭黔,估摸著這時(shí)辰食茎,那群盜匪還在阿四身后緊...
    新人素閱讀 151評(píng)論 0 0