JS字符串方法總結(jié)

JS字符串方法總結(jié)

1. length 屬性返回字符串的長(zhǎng)度

const str = '1234567'
console.log(str.length)

2. indexOf() 方法返回字符串中指定文本 首次 出現(xiàn)的索引

3. lastIndexOf() 方法返回字符串中指定文本 最后 出現(xiàn)的索引

4. includes() 方法返回 true false

const str = "China"
const result0 = str.indexOf('China')  // 0
const result1 = str.indexOf('C')      // 0
const result2 = str.indexOf('w')      // 不包含 返回 -1
const result3 = str.indexOf()
// 兩種方法都接受作為檢索起始位置的第二個(gè)參數(shù) 縮小搜查范圍
var str = "The full name of is the People's Republic of China."
const result0 = str.indexOf("China"))     // 45   
const result1 = str.indexOf("China", 11)) // 45

5. 有三種提取字符串的方法

  • slice(start, end)
  • substring(start, end) // 類似于 slice() 不同之處在于 substring() 無(wú)法接受負(fù)的索引芹啥。
  • substr(start, length) // 類似于 slice() 不同之處在于第二個(gè)參數(shù)規(guī)定被提取部分的長(zhǎng)度陡蝇。 省略截取到最后
const str = '0123456789'
const result = str.slice(1, 4)   // 123  // 注意包括 前 不包括后 [ )
cosnt result = str.slice(1, -1)  // 12345678  // 負(fù)值從左數(shù) -1 不包含9
const result = str.slice(1);     // 123456789  // 不寫 就接到最后了  
const result = str.slice(-5);    // 56789  // 簡(jiǎn)單記憶 截取后五位 

6. split() 把字符串轉(zhuǎn)換為數(shù)組

const str = 'a,b,c,d,e,f'
const arr = str.split(',') // ['a', 'b', 'c', 'd', 'e', 'f']
// 反過來  用的是數(shù)組的 join(',') 

7. replace() 方法不會(huì)改變調(diào)用他的字符串, 它返回一個(gè)新的字符串

  • 默認(rèn)地, replace() 只替換首個(gè)匹配
const str = 'Please visit Microcoft and Microcoft!'
const n = str.replace('Microcoft', 'W3cScholl') //  "Please visit W3School and Microsoft!"
  • 默認(rèn)地让蕾,replace() 對(duì)大小寫敏感
const str = "Please visit Microsoft and Microsoft!" 
const n = str.replace("microsoft", "W3School") //  "Please visit Microsoft and Microsoft!"
  • 如需替換所有匹配侣夷,請(qǐng)使用正則表達(dá)式的 g 標(biāo)志(用于全局搜索)
const str = "Please visit Microsoft and Microsoft!" 
const n = str.replace(/Microsoft/g, "W3School") //  "Please visit W3School and W3School!"

正則相關(guān)

字符串的方法

  • match()
    對(duì)字符串進(jìn)行正則匹配 返回匹配的結(jié)果
var str = 'hello world'
undefined
str.match(/l/)
=>> ["l", index: 2, input: "hello world", groups: undefined]
str.match(/l/g)
=>>["l", "l", "l"]
str.match(/a/g)
=>>null
  • search()
    返回第一個(gè)滿足條件的匹配結(jié)果在整個(gè)字符串中的位置 , 如果沒有任何匹配, 返回 -1
var str = 'hello world'
undefined
str.search(/l/)
=>> 2
str.search(/llo/)
=>> 2
str.match(/l/g)
=>>2
str.match(/a/)
=>>-1
  • replace(regexp/substr,replacement)
    可以替換匹配的值, 它接受兩個(gè)參數(shù),
    • 第一參數(shù)是正則表達(dá)式或字符串(表示搜索模式),
    • 第二個(gè)是匹配的內(nèi)容 一個(gè)字符串值塞关。替換文本的函數(shù)(要有return)
      • 在這種情況下晕讲,每個(gè)匹配都調(diào)用該函數(shù)贵白,它返回的字符串將作為替換文本使用抚芦。該函數(shù)的第一個(gè)參數(shù)是匹配模式的字符串倍谜。接下來的參數(shù)是與模式中的子表達(dá)式匹配的字符串,可以有 0 個(gè)或多個(gè)這樣的參數(shù)叉抡。接下來的參數(shù)是一個(gè)整數(shù)尔崔,聲明了匹配在 stringObject 中出現(xiàn)的位置。最后一個(gè)參數(shù)是 stringObject 本身褥民。
'2019.10.05'.replace(/\./g, '-')
=>> '2019-10-05'

let data = {
    name: '小明',
    message: '消息'
}
let str = "<p>{{name}}-{{message}}</p>"
let exp = /\{\{(.+?)(\})\}/g
let result = str.replace(exp, (a, $1, $2, index, strObj) => {
    // 根據(jù) str 的特征 此回調(diào)調(diào)用兩次 注意 $1, $2 .... 和 正則的分組要一致
    console.log(a)  // {{name}} {{message}}
    console.log($1) // name message
    console.log($2) // } }
    console.log(index) // 3 12
    console.log(strObj) // "<p>{{name}}-{{message}}</p>" "<p>{{name}}-{{message}}</p>"
    return data[$1] // 返回值就是要替換的
})
console.log(str)    // <p>{{name}}-{{message}}</p>
console.log(result) // <p>小明-消息</p>

8. 大小寫轉(zhuǎn)換

  • toUpperCase() 把字符串轉(zhuǎn)換為大寫
  • toLowerCase() 把字符串轉(zhuǎn)換為小寫
const str = 'Hello World'
cosnt result = str.toUpperCase() // 'HELLO WORLD'

9. concat() 拼接一個(gè)或多個(gè)字符串

const str0 = 'Hello'
cosnt str1 = 'World'
const result = str0.concat(' ', str1) // 'Hello World'

10. trim() 截掉首尾的空白符

 
const str = "       Hello World!        ";
cosnt result = str.trim();  //  Hello World!

// Internet Explorer 8 或更低版本不支持 trim() 方法 
// 如需支持 IE 8季春,您可搭配正則表達(dá)式使用 replace() 方法代替:
// var str = "       Hello World!        ";
// alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));

11. 通過下標(biāo) 提取字符串 charAt(position) charCodeAt(position)

var str = "HELLO WORLD";
str.charAt(0);            // 返回 H
str.charCodeAt(0);         // 返回 72   這是'H'的 unicode 編碼

// 最好還是使用 str[0] // 更加直觀
* 使用屬性訪問有點(diǎn)不太靠譜:

  * 不適用 Internet Explorer 7 或更早的版本
  * 它讓字符串看起來像是數(shù)組(其實(shí)并不是)
  * 如果找不到字符,[ ] 返回 undefined消返,而 charAt() 返回空字符串载弄。
  * 它是只讀的耘拇。str[0] = "A" 不會(huì)產(chǎn)生錯(cuò)誤(但也不會(huì)工作!) 賦值是無(wú)效的

12. 檢測(cè)以...開頭 以... 結(jié)尾 startWith() endWith() 返回 true false

var str = 'Hello world, welcome to the Runoob.';
var n = str.startsWith('Hello')  // true
var n = str.endWith('jay')  // false

13.padStart(length, tag), padEnd() 補(bǔ)位方法

  • 默認(rèn)給原字符串開頭填充“ ”宇攻,也就是默認(rèn)填充空格
const str = '123'
undefined
str.padStart(10)
"       123"
  • 字符串太長(zhǎng)惫叛,使填充后的字符串長(zhǎng)度超過了目標(biāo)長(zhǎng)度,則只保留最左側(cè)的部分逞刷,其他部分會(huì)被截?cái)唷?/li>
let monList = []
for (var i = 1; i < 13; i++) {
    monList.push((i + "").padStart("2", "0"))
}
console.log(monList) // ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]

  • 自己實(shí)現(xiàn)
String.prototype.zpadStart = function (targetLength, padString) {
    let string = this
    while (string.length < targetLength) {
        string = padString + string
    }
    return string
}

12. 字符串中加空格

const str = 'something' + '\xa0\xa0\xa0\xa0\xa0\xa0\xa0' + 'something';
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嘉涌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夸浅,更是在濱河造成了極大的恐慌仑最,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帆喇,死亡現(xiàn)場(chǎng)離奇詭異词身,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)番枚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來损敷,“玉大人葫笼,你說我怎么就攤上這事∞致” “怎么了路星?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诱桂。 經(jīng)常有香客問我洋丐,道長(zhǎng),這世上最難降的妖魔是什么挥等? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任友绝,我火速辦了婚禮,結(jié)果婚禮上肝劲,老公的妹妹穿的比我還像新娘迁客。我一直安慰自己,他們只是感情好辞槐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布掷漱。 她就那樣靜靜地躺著,像睡著了一般榄檬。 火紅的嫁衣襯著肌膚如雪卜范。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天鹿榜,我揣著相機(jī)與錄音海雪,去河邊找鬼锦爵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛喳魏,可吹牛的內(nèi)容都是我干的棉浸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼刺彩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼迷郑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起创倔,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嗡害,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后畦攘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霸妹,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年知押,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹螟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡台盯,死狀恐怖罢绽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情静盅,我是刑警寧澤良价,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站蒿叠,受9級(jí)特大地震影響明垢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜市咽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一痊银、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧施绎,春花似錦曼验、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至孤紧,卻和暖如春豺裆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工臭猜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躺酒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓蔑歌,卻偏偏與公主長(zhǎng)得像羹应,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子次屠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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