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

use*_*026 1 javascript arrays jquery

我试图弄清楚如何用方括号替换点表示法中的字符串:

emergency.1.phone.2
Run Code Online (Sandbox Code Playgroud)

应转换为:

emergency[1][phone][2]
Run Code Online (Sandbox Code Playgroud)

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

CRi*_*ice 6

您可以通过将字符串.replace方法与带有特殊替换功能的正则表达式一起使用来实现。

正则表达式为/\.(.+?)(?=\.|$)/g,它查找:

  • 文字.,后跟
  • 任何东西,直到:
  • 另一个文字.或字符串的结尾

然后,您可以指定一个函数,该函数采用捕获的字符串并将其放在方括号中,并将其用作替换程序。

例:

const dots = "emergency.1.phone.2"

// Should convert to:
// emergency[1][phone][2]

console.log(dots.replace(/\.(.+?)(?=\.|$)/g, (m, s) => `[${s}]`))
Run Code Online (Sandbox Code Playgroud)