按{0},{1} ... {n}拆分字符串并替换为空字符串

Why*_*ser 2 javascript regex string split

我有以下字符串:

var text = "Hello world! My name is {0}. How {1} can you be?"
Run Code Online (Sandbox Code Playgroud)

我想找到每个{n}并用空字符串替换它们.我对正则表达式完全没用,并试过这个:

text = text.split("/^\{\d+\}$/").join("");
Run Code Online (Sandbox Code Playgroud)

我确信这是一个简单的答案,可能已经存在一些答案,但我不知道该搜索什么.甚至不确定英语中的"{"是什么.

请(如果可能)保持使用"拆分"和"加入".

谢谢!

Avi*_*Raj 6

你可以通过string.replace功能实现这一点.

string.replace(/\{\d+\}/g, "")
Run Code Online (Sandbox Code Playgroud)

例:

> var text = "Hello world! My name is {0}. How {1} can you be?"
undefined
> text.replace(/\{\d+\}/g, "")
'Hello world! My name is . How  can you be?'
Run Code Online (Sandbox Code Playgroud)

通过string.split.你只需要移除锚点.^声称我们刚开始并$声称我们已经结束了.因为{num}单行中不仅存在字符串,所以正则表达式失败.并删除正则表达式分隔符周围的引号/

> text.split(/\{\d+\}/).join("");
'Hello world! My name is . How  can you be?'
Run Code Online (Sandbox Code Playgroud)


tal*_*myn 5

你很亲密 你想要的是: text = text.split(/\{\d+\}/).join("");

你错过的两件事是:

  1. ^=字符串的开头和$=字符串的结尾.由于您尝试匹配的模式周围还有其他字符,因此您不需要这些字符.
  2. 如果在split()方法中使用正则表达式,则需要使用RegExp对象,而不是字符串.删除"'s并且只使用表达式start和end /将定义一个RegExp对象.

我实际上同意其他人的看法,这种replace()方法可以更好地完成你想要完成的任务,但如果你想使用split()join(),正如你所说,这就是你需要的改变.