我想在打字稿和10号角文字中使用replaceAll
,但出现此错误类型'string'上不存在属性'replaceAll'
我的代码是这样的
let date="1399/06/08"
console.log(date.replaceAll('/', '_'))
输出:13990608
如何修复我的打字稿以向我展示此功能?
答案 0 :(得分:16)
您应该能够通过您的 tsconfig.json
添加这些类型。
将 "ESNext.String"
添加到 lib
内的 compilerOptions
。
您的 tsconfig 应该如下所示:
{
...,
"compilerOptions": {
...,
"lib": [
...,
"ESNext.String"
]
}
}
replaceAll
方法在 lib.esnext.string.d.ts
中定义如下:
interface String {
/**
* Replace all instances of a substring in a string, using a regular expression or search string.
* @param searchValue A string to search for.
* @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
*/
replaceAll(searchValue: string | RegExp, replaceValue: string): string;
/**
* Replace all instances of a substring in a string, using a regular expression or search string.
* @param searchValue A string to search for.
* @param replacer A function that returns the replacement text.
*/
replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
}
答案 1 :(得分:11)
您可以使用RegExp和全局标志来解决问题
"1399/06/08".replace(/\//g, "_") // "1399_06_08"
答案 2 :(得分:8)
来自docs:
截至2020年8月,Firefox支持
replaceAll()
方法,但 不是通过Chrome。在Chrome 85中将可用。
与此同时,您可以找到其他多种方法here。
可能的未来读者的截图:
答案 3 :(得分:2)
您可以创建一个文件
<块引用>myOwnTypes.d.ts
在你的 angular 项目的根目录添加以下代码:
interface String {
replaceAll(input: string, output : string): any;
}
这将告诉打字稿字符串具有此属性。
现在 replaceAll 在 Chrome 和 Firefox 中受支持,但检查 caniuse 以检查它是否满足您的需求总是好的。
https://caniuse.com/?search=replaceAll
如果这对您有用的话,我非常欢迎您点赞,我从这个 stackoverflow 帐户开始,并感谢您的支持:)
答案 4 :(得分:1)
只需使用此功能
let date="1399/06/08"
console.log(date.split('/').join('_'))
答案 5 :(得分:0)
Chrome支持replaceAll,因此可以安全使用。但是打字稿仍然会产生错误,因此您可以将字符串强制转换为任意字符串,以克服该障碍。
The word reindeer occurs 2 times in the string ierndeBeCrerindAeer.
The left over word is BCA
谢谢曼苏纠正我。
答案 6 :(得分:0)
根据 MDN 网络文档,
<块引用>" 要执行全局搜索和替换,请在 正则表达式”。
所以,你可以尝试这样做:
g
这会自动用下划线替换所有正斜杠。确保还在正则表达式的末尾保留 const date="1399/06/08"
const forwardSlashRegex = /(\/)/g;
console.log(date.replace(forwardSlashRegex, '_'));
全局指示符,因为它允许 JS 知道您要替换所有出现正斜杠的位置。
有关使用正则表达式指标的更多信息,请参阅以下非常有用的指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions