2015-02-05 60 views
2

我有以下字符串:分割字符串替换空字符串

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

我想找到每个{N},并取代它们一个空的字符串。我用正则表达式完全无用,并试图此:

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

我敢肯定,这是一个简单的答案,可能存在一定的答案已经在SO,但我不知道该怎么寻找。甚至不知道“{”在英语中被称为什么。

请(如果可能)保持使用“分割”和“连接”。

谢谢!

+0

你用JavaScript编写正则表达式如下:'/ hello/flags',其中hello是匹配模式。在你的情况下:'text.split(/ \ {\ d + \} /);' – andlrc 2015-02-05 15:28:03

回答

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

谢谢(以及其他所有快速回答的人),这个工作非常完美! :) – Whyser 2015-02-05 15:30:03

+0

很高兴能解决.. – 2015-02-05 15:38:51

3

引号你可以使用replace mehthod:

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

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

,你错过了两件事情是:

  1. ^ =字符串和$开始=字符串的结尾。由于你试图匹配的模式周围还有其他角色,所以你不需要这些角色。
  2. 如果您在split()方法中使用正则表达式,则需要使用RegExp对象,而不是字符串。删除"的表达式并仅以/开始和结束表达式将定义RegExp对象。

我真的与别人同意replace()方法将是一个更好的方式做你正在试图完成的任务,但如果你想使用split()join(),如你所说,这是改变你的需要。

+0

啊!谢谢你解释我的错误! RegEx是一个我永远无法记忆的谜团(至少现在有这种感觉)。我会考虑使用替代! – Whyser 2015-02-05 15:31:08

+0

只要继续练习。 。 。它变得更容易。 :) – talemyn 2015-02-05 15:37:03