美文网首页
JS string.replace 用法详解

JS string.replace 用法详解

作者: 菜鸡前端 | 来源:发表于2021-09-04 18:07 被阅读0次

以前对于 string.replace(),我常用于简单的子串替换,对它的一些使用细节不是很清楚,特别正则模式和替换函数的搭配使用,今天好好捋一捋。

replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。

  • 模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
  • 如果pattern是字符串,则仅替换第一个匹配项(替换全部使用 replaceAll)。
// regexp:匹配正则
// substr:字串
// newSubStr: 用来替换的部分
// function: 更加灵活使用
str.replace(regexp|substr, newSubStr|function)

下面分别介绍4种组合的用法,以及使用场景。

1. string.replace(substr, newSubstr)

将第一个 substr 替换为 newSubstr,举例:

const p = 'I love dog, do you love dog';
console.log(p.replace('dog', 'monkey')); // I love monkey, do you love dog

2. string.replace(substr, replaceFn)

使用 replaceFn 返回值来替换第一个substr,举例:

const p = 'I love dog, do you love dog';
console.log(p.replace('dog', function (substr) {
  return "monkey";
}));

3. string.replace(regexp, newSubstr)

第一个使用正则时,newSubstr 中可以使用内置的替换符(占位符),原理是正则中的反向引用。下面的例子演示了如何交换一个字符串中两个单词的位置,这个脚本使用1 和2 代替替换文本。

var str = "John Smith";
var reg = /(\w+)\s(\w+)/g
var res = str.replace(reg, "$2, $1");
console.log(res) // Smith, John

1 和2 分别指向 reg 中的第一个分组 和 第二个分组,支持的占位符如下:

变量名 代表的值
$$ 插入一个 "$"。
$& 插入匹配的子串。
$` 插入当前匹配的子串左边的内容。
$' 插入当前匹配的子串右边的内容。
$n 假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。提示:索引是从1开始。如果不存在第 n个分组,那么将会把匹配到到内容替换为字面量。比如不存在第3个分组,就会用“$3”替换匹配到的内容。
$<Name> 这里Name 是一个分组名称。如果在正则表达式中并不存在分组(或者没有匹配),这个变量将被处理为空字符串。只有在支持命名分组捕获的浏览器中才能使用。

4. string.replace(regexp, replaceFn)

当匹配执行后,replaceFn 就会执行,函数的返回值作为替换字符串。如果为全局匹配模式,那么这个方法将被多次调用。replaceFn 函数的参数稍微有点复杂:

变量名 代表的值
match 匹配的子串。(对应于上述的$&。)
p1,p2, ... 假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的1,2等。)例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+。
offset 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd',匹配到的子字符串是 'bc',那么这个参数将会是 1)
string 被匹配的原字符串。
NamedCaptureGroup 命名捕获组匹配的对象

在使用这个函数时,确保你能准备的计算正则分组的数量,以便计算参数的个数。

(1)将所有单词的第一个字母大写

var str = "john mith 12";
var reg = /(\s?)(\w+)/g
var res = str.replace(reg, function(match, space, letter) {
    return space + letter[0].toUpperCase() + letter.substr(1);
});
console.log(res) // John Mith 12

(2) 下划线转驼峰风格

var str = "first_name_111";
var reg = /(\_)(\w)/g
var res = str.replace(reg, function(match, underline, letter) {
  return letter.toUpperCase()
});
console.log(res) // firstName111

相关文章

  • JS string.replace 用法详解

    以前对于 string.replace(),我常用于简单的子串替换,对它的一些使用细节不是很清楚,特别正则模式和替...

  • string.replace用法详解

    replace的用法 string.replace

  • call apply

    js基础知识---call,apply,bind的用法 call,apply详解 javascript中,call...

  • LiveData

    LiveDataBus实现原理#用法详解#LiveData扩展 LiveDataBus实现原理#用法详解#Live...

  • 面向对象继承中call和apply

    .apply()用法和call()的区别 Js apply方法详解我在一开始看到javascript的函数appl...

  • IOS学习(13)-UITextView

    UITextView详解iOS开发系列之四 – UITextView 用法小结UITextView控件的用法详解

  • Retrofit 入门

    Retrofit用法详解 参考:Retrofit 官方APIRetrofit用法详解(入门看这篇就够了) 一、简介...

  • Selenium库介绍

    介绍 驱动浏览器,模拟人的上网场景 解决js渲染的问题 安装 用法详解 基本使用 查找元素 find_elemen...

  • 结构体对齐方式

    #pragma pack()用法详解

  • JavaScript八张思维导图

    目录 JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实...

网友评论

      本文标题:JS string.replace 用法详解

      本文链接:https://www.haomeiwen.com/subject/qugrwltx.html