JavaScript用方括号替换字符串点表示法

时间:2018-07-18 20:59:17

标签: javascript jquery arrays

我正在尝试找出如何用方括号替换点表示法中的字符串:

emergency.1.phone.2

应转换为:

emergency[1][phone][2]

我正在尝试使其具有动态性,因此无论有多少个点,它都会转换字符串。

3 个答案:

答案 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']