欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中關(guān)于字符串替換與截取的知識(shí)點(diǎn)匯總

 更新時(shí)間:2023年05月23日 10:41:44   作者:橙子家  
在日常開發(fā)中,經(jīng)常遇到針對(duì)字符串的替換、截取,知識(shí)點(diǎn)比較碎容易混淆,所以本文為大家整理了一下相關(guān)的知識(shí)點(diǎn),希望對(duì)大家有所幫助

〇、前言

在日常開發(fā)中,經(jīng)常遇到針對(duì)字符串的替換、截取,知識(shí)點(diǎn)比較碎容易混淆,特此總結(jié)一下,僅供參考。

一、替換第一個(gè)匹配項(xiàng)

字符串替換

let strtest = "0123測(cè)試replace456測(cè)試replace789測(cè)試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace("測(cè)試","ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// 輸出字符串:0123ceshireplace456測(cè)試replace789測(cè)試replace0

正則表達(dá)式替換

當(dāng)直接在被替換字符串恰后加上 / 時(shí),不添加修飾符,就等同于直接字符串替換。

let strtest = "0123測(cè)試replace456測(cè)試replace789測(cè)試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/測(cè)試/, "ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// 輸出字符串:0123ceshireplace456測(cè)試replace789測(cè)試replace0

二、替換全部匹配項(xiàng)

字符串分組再聯(lián)合

let strtest = '0123測(cè)試replace456測(cè)試replace789測(cè)試replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("測(cè)試");
let outstr = arrstr.join("ceshi");
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// 輸出字符串:0123ceshireplace456ceshireplace789ceshireplace0

正則表達(dá)式替換

格式:/待替換的字符串/g、/待替換的字符串/mgi。

  • g:執(zhí)行全局匹配,替換全部匹配項(xiàng);
  • i:不區(qū)分大小寫;
  • m:多行匹配。

gim 可所以組合使用。

let strtest = "0123測(cè)試replace456測(cè)試replace789測(cè)試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/測(cè)試/g, "ceshi")
// 另一種寫法:
// let reg = new RegExp("測(cè)試", "g")
// let outstr = strtest.replace(reg, "ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// 輸出字符串:0123ceshireplace456ceshireplace789ceshireplace0

三、替換第 n 個(gè)匹配項(xiàng)

下邊以第二個(gè)為例。

字符串分組再聯(lián)合

思路:先通過被替換項(xiàng)分組,再根據(jù)目標(biāo)位數(shù)把整個(gè)分組分為兩個(gè)部分,在通過替換字符串聯(lián)合。

let num = 2 // 定義替換第二個(gè)匹配項(xiàng)
let strtest = '0123測(cè)試replace456測(cè)試replace789測(cè)試replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("測(cè)試");
if(arrstr.length < num)
    return
let arrstr1=[],arrstr2=[]
for(let ii=0;ii<arrstr.length;ii++){
    if(ii < num)
        arrstr1.push(arrstr[ii])
    else
        arrstr2.push(arrstr[ii])
}
let outstr = arrstr1.join("測(cè)試")+"ceshi"+arrstr2.join("測(cè)試");
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// (index):59 輸出字符串:0123測(cè)試replace456ceshireplace789測(cè)試replace0

正則表達(dá)式實(shí)現(xiàn)

將第一個(gè)匹配項(xiàng)跳過,并把第二個(gè)匹配項(xiàng)之前的內(nèi)容標(biāo)識(shí)為變量。

let strtest = '0123測(cè)試replace456測(cè)試replace789測(cè)試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/((?:.*?測(cè)試.*?){1}.*?)測(cè)試/m, "$1-ceshi-")
// ?: 表示:其后邊的 pattern 匹配但不獲取。匹配項(xiàng)被標(biāo)識(shí)為 $1,后續(xù)會(huì)引用
// .*? 表示:.* 除 '/n' 之外的任意個(gè)任意字符
// {1} 表示:其前邊的 pattern 出現(xiàn)一次
// /pattern/m 表示: m 全局查詢
console.log("輸出字符串:" + outstr)
// 原字符串:0123測(cè)試replace456測(cè)試replace789測(cè)試replace0
// 輸出字符串:0123測(cè)試replace456測(cè)試replace789-ceshi-replace0

參考:https://stackoverflow.com/questions/42943096/replace-nth-match-of-matches-with-regex

四、替換指定標(biāo)記之間的內(nèi)容

字符串分組再聯(lián)合

let strtest = '0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0';
let startstr = "<Object>"
let endstr = "</Object>"
if (strtest.indexOf(startstr) > strtest.indexOf(endstr))
    return
console.log("原字符串:" + strtest)
let arr = strtest.split(startstr)
let arr2 = arr[1].split(endstr)
let resultstr = arr2[0]
let outstr = startstr + resultstr + endstr
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0
// 輸出字符串:<Object>replace456測(cè)試replace78</Object>

正則表達(dá)式方法 replace()、match()、exec()

替換為指定字符串:( replace() )

let strtest = '0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/<Object>(.*?)<\/Object>/m, "-ceshi-") // \ 為轉(zhuǎn)義字符
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0
// 輸出字符串:0123-ceshi-9測(cè)試replace0

取出帶標(biāo)記字符串的內(nèi)容:( match() )

let strtest = '0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.match(/<Object>(.*?)<\/Object>/m)
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測(cè)試replace78</Object>9測(cè)試replace0
// 輸出字符串:<Object>replace456測(cè)試replace78</Object>

當(dāng)可能有多個(gè)匹配項(xiàng)時(shí):( exec() )

let strtest = "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個(gè)內(nèi)容</Object>"
console.log("原字符串:" + strtest)
let regex = /<Object>(.*?)<\/Object>/gm
const matches = []
let match
while ((match = regex.exec(strtest)) !== null) {
    matches.push(match[1])
    console.log(match)
}
console.log("輸出全部匹配項(xiàng):", matches)
// 原字符串:這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個(gè)內(nèi)容</Object>
// (2) ["<Object>要提取的內(nèi)容</Object>", "要提取的內(nèi)容", index: 2, input: "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個(gè)內(nèi)容</Object>", groups: undefined]
// (2) ["<Object>另一個(gè)內(nèi)容</Object>", "另一個(gè)內(nèi)容", index: 28, input: "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個(gè)內(nèi)容</Object>", groups: undefined]
// 輸出全部匹配項(xiàng): (2) ["要提取的內(nèi)容", "另一個(gè)內(nèi)容"]

以上就是JavaScript中關(guān)于字符串替換與截取的知識(shí)點(diǎn)匯總的詳細(xì)內(nèi)容,更多關(guān)于JavaScript字符串替換截取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS如何實(shí)現(xiàn)Base64編碼和解碼(及中文亂碼問題)

    JS如何實(shí)現(xiàn)Base64編碼和解碼(及中文亂碼問題)

    這篇文章主要給大家介紹了關(guān)于JS如何實(shí)現(xiàn)Base64編碼和解碼及中文亂碼問題的相關(guān)資料,Base64編碼是一種常用的將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本數(shù)據(jù)的方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • javascript多種數(shù)據(jù)類型表格排序代碼分析

    javascript多種數(shù)據(jù)類型表格排序代碼分析

    這個(gè)表格排序代碼,性能比上一次那一個(gè)好了很多而且支持很多種類型的排序,這一次寫的能支持更多的排序。
    2010-09-09
  • 教你如何使用firebug調(diào)試功能了解javascript閉包和this

    教你如何使用firebug調(diào)試功能了解javascript閉包和this

    這篇文章主要介紹了教你如何使用firebug調(diào)試功能了解javascript閉包和this,javascript的調(diào)試也是一個(gè)比較大的難點(diǎn),很多基礎(chǔ)的東西都需要自己去摸索,這里將自己的經(jīng)驗(yàn)分享給大家,希望對(duì)大家能夠有所幫助
    2015-03-03
  • Js nodeType 屬性全面解析

    Js nodeType 屬性全面解析

    本文是對(duì)Js nodeType的屬性進(jìn)行了全面分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • js prototype深入理解及應(yīng)用實(shí)例分析

    js prototype深入理解及應(yīng)用實(shí)例分析

    這篇文章主要介紹了js prototype深入理解及應(yīng)用,結(jié)合實(shí)例形式分析了JavaScript prototype屬性功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 小程序自定義彈框的方法

    小程序自定義彈框的方法

    這篇文章主要為大家詳細(xì)介紹了小程序自定義彈框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • csdn 批量接受好友邀請(qǐng)

    csdn 批量接受好友邀請(qǐng)

    說實(shí)話,加好友的太多了,怎么辦,想個(gè)批量的辦法吧
    2009-02-02
  • BootStrap modal實(shí)現(xiàn)拖拽功能

    BootStrap modal實(shí)現(xiàn)拖拽功能

    這篇文章主要為大家詳細(xì)介紹了BootStrap modal實(shí)現(xiàn)拖拽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • js中如何對(duì)json數(shù)組進(jìn)行排序

    js中如何對(duì)json數(shù)組進(jìn)行排序

    這篇文章主要介紹了js中如何對(duì)json數(shù)組進(jìn)行排序的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解如何在微信小程序中愉快地使用sass

    詳解如何在微信小程序中愉快地使用sass

    這篇文章主要介紹了詳解如何在微信小程序中愉快地使用sass,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07

最新評(píng)論