我正在尝试找出如何用方括号替换点表示法中的字符串:
emergency.1.phone.2
应转换为:
emergency[1][phone][2]
我正在尝试使其具有动态性,因此无论有多少个点,它都会转换字符串。
答案 0 :(得分:3)
您可以通过将字符串.replace
与带有特殊替换功能的正则表达式一起使用来实现此目的。
正则表达式为/\.(.+?)(?=\.|$)/g
,它查找:
.
,后跟.
或字符串的结尾然后,您可以指定一个函数,该函数采用捕获的字符串并将其放在方括号中,并将其用作替换程序。
示例:
const dots = "emergency.1.phone.2"
// Should convert to:
// emergency[1][phone][2]
console.log(dots.replace(/\.(.+?)(?=\.|$)/g, (m, s) => `[${s}]`))
答案 1 :(得分:1)
一种替代方法是使用函数reduce
。
let str = "emergency.1.phone.2",
arr = str.split('.'),
result = arr.reduce((a, s, i) => i === 0 ? s : a + `[${s}]`);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:1)
const originalString = 'emergency.1.phone.2'
const desiredString = originalString
.split('.')
.reduce((fullPath, arg) => fullPath + `['${arg}']`)
console.log(desiredString)
// logs: emergency['1']['phone']['2']