📜  JavaScript字符串replace()

📅  最后修改于: 2020-09-27 07:12:49             🧑  作者: Mango

JavaScript replace()方法返回一个新字符串 ,其中替换了指定的字符串/ regex。

replace()的语法为:

str.replace(pattern, replacement)

在这里, str是一个字符串。


replace()参数

replace()方法采用:

  • pattern -要替换的字符串或正则表达式
  • replacement -的pattern被替换为这个replacement (可以是一个字符串或一函数)

从replace()返回值
  • replace()方法返回一个替换了指定模式的新字符串 。

示例1:替换第一次出现
const text = "Java is awesome. Java is fun."

// passing a string as the first parameter
let pattern = "Java";
let new_text = text.replace(pattern, "JavaScript");
console.log(new_text);

// passing a regex as the first parameter
pattern = /Java/;
new_text = text.replace(pattern, "JavaScript");
console.log(new_text);

输出

JavaScript is awesome. Java is fun.
JavaScript is awesome. Java is fun.

在这两个replace()方法中,第一次出现的Java都用JavaScript替换。


示例2:替换所有出现

要替换所有出现pattern ,您需要使用带有g开关的正则表达式(全局搜索)。例如, /Java/g代替/Java/

const text = "Java is awesome. Java is fun."

// notice the g switch in the regex pattern
const pattern = /Java/g;

const new_text = text.replace(pattern, "JavaScript");
console.log(new_text);

输出

JavaScript is awesome. JavaScript is fun.

在这里, replace()方法用JavaScript替换了Java两次出现。


不考虑大写/小写替换

replace()方法区分大小写。要执行不区分大小写的替换,您需要使用带i开关的正则表达式(不区分大小写的搜索)。

示例3:不区分大小写的替换
const text = "javaSCRIPT JavaScript"

// the first occurrence of javascript is replaced
let pattern = /javascript/i;  // case-insensitive search
let new_text = text.replace(pattern, "JS");
console.log(new_text)  // JS JavaScript

// all occurrences of javascript is replaced
pattern = /javascript/gi;  // case-insensitive and global search
new_text = text.replace(pattern, "JS");
console.log(new_text)  // JS JS

输出

JS JavaScript
JS JS

示例4:传递函数作为替换

您还可以将函数 (而不是字符串)作为第二个参数传递给replace()方法。

const text = "Random digit: 3"

// generate a random digit between 0 and 9
function generateRandomDigit() {
  return Math.floor(Math.random() * 10)
}

// regex to match a digit
const pattern = /\d/;

const new_text = text.replace(pattern, generateRandomDigit);
console.log(new_text)

输出

Random digit: 8

运行此程序时,您可能会得到不同的输出。这是因为文本中的第一位数字被替换为0到9之间的随机数字。


推荐阅读: JavaScript字符串replaceAll()