2015-02-05 76 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