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

时间:2015-02-05 15:23:30

标签: javascript regex string split

我有以下字符串:

var text = "Hello world! My name is {0}. How {1} can you be?"

我想找到每个{n}并用空字符串替换它们。我对正则表达式毫无用处并试过这个:

text = text.split("/^\{\d+\}$/").join("");

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

请(如果可能)保持使用" split"和"加入"。

谢谢!

3 个答案:

答案 0 :(得分:6)

您可以通过string.replace函数实现此目的。

string.replace(/\{\d+\}/g, "")

示例:

> 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?'

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

周围的引号
> text.split(/\{\d+\}/).join("");
'Hello world! My name is . How  can you be?'

答案 1 :(得分:5)

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

你错过的两件事是:

  1. ^ =字符串的开头,$ =字符串的结尾。由于您尝试匹配的模式周围还有其他字符,因此您不需要这些字符。
  2. 如果您在split()方法中使用正则表达式,则需要使用RegExp对象,而不是字符串。删除"并只使表达式以/开头和结尾将定义一个RegExp对象。
  3. 我实际上同意其他人认为replace()方法可以更好地完成您要完成的工作,但如果您想使用split()join(),如你所说,这是你需要的改变。

答案 2 :(得分:3)

你可以使用replace mehthod:

var repl = text.replace(/\{\d+\} */g, '');
//=> "Hello world! My name is . How can you be?"