替换 TypeScript 中所有出现的字符串
Replace all occurrences of a String in TypeScript
使用该replaceAll()
方法替换 TypeScript 中所有出现的字符串,例如str.replaceAll('old', 'new')
. 该replaceAll()
方法返回一个新字符串,其中所有出现的指定子字符串都被替换为提供的替换项。
const str = 'apple banana apple'; const result = str.replaceAll('apple', 'kiwi'); console.log(result); // 👉️ "kiwi banana kiwi"
在 TypeScript 中使用replaceAll()方法时,您可能会遇到以下错误
。
const str = 'apple banana apple'; // ⛔️ Error: Property 'replaceAll' does not exist on // type '"apple banana apple"'. Do you need // to change your target library? Try changing // the 'lib' compiler option to 'es2021' or later.ts(2550) const result = str.replaceAll('apple', 'kiwi');
如果您收到“属性‘replaceAll’在类型上不存在”错误,请打开您的
tsconfig.json
文件并添加ES2021.String
到您的lib
数组中。
{ "compilerOptions": { // ... other options "lib": [ // ... other libs "ES2021.String" ] } }
这将解决错误,您将能够使用该replaceAll()
方法。
我们传递给该String.replaceAll
方法的 2 个参数是:
- 要替换的字符串
- 替换字符串
如果您必须替换所有出现的不区分大小写的字符串,您可以将正则表达式传递给该replaceAll
方法并像我们使用该replace
方法一样使用它。
const str = 'APPLE banana apple'; const result = str.replaceAll(/apple/gi, 'kiwi'); console.log(result); // 👉️ "kiwi banana kiwi"
我们将以下 2 个参数传递给该String.replace
方法:
- 要匹配的正则表达式。请注意,我们使用
g
(global) 标志来指定我们要匹配所有出现而不仅仅是第一个 - 替换字符串
该i
标志启用不区分大小写的搜索。有关正则表达式标志的完整列表,请查看
MDN 文档中的此表。
replaceAll
方法不会更改原始字符串,而是返回一个替换了匹配项的新字符串。字符串在 JavaScript(和 TypeScript)中是不可变的。或者,您可以使用该replace
方法。
要替换 TypeScript 中所有出现的字符串,请使用该方法,将带有(全局搜索)标志replace()
的正则表达式传递给它。g
例如,str.replace(/old/g, 'new')
返回一个新字符串,其中所有出现的old
都替换为new
。
const str = 'APPLE banana apple'; const result = str.replace(/apple/gi, 'kiwi'); console.log(result); // 👉️ "kiwi banana kiwi"
replace方法采用的第一个参数
是正则表达式,第二个参数是替换字符串。
如果您需要支持非常旧的浏览器(如 Internet Explorer)并且您不将代码转换为旧版本的 JavaScript ,则可以使用replace
over 。replaceAll