2012-03-21 112 views
17

在Flash ActionScript 3中,我試圖做一些我認爲很簡單的事情:用另一個短語替換文本字符串中的短語的所有實例。但是,由於某種原因,只有第一個實例被替換,其餘的被忽略。我通過9次左右的字符串替換函數運行它,共同破解了一個解決方案,所以最終結果全部取代了<br />,但我想知道我做錯了什麼。提前致謝!ActionScript 3 .replace()只替換第一個實例

我的代碼:

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />"; 
var postAddress = importPostAddress.replace("<br />",", "); 

預期結果跟蹤postAddress時:

123 Fake Street, Mytown, Mycounty, Mycountry, PO5 7CD, , 

實際結果:

123 Fake Street, Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br /> 

回答

28

爲了解決這個問題,你需要做的juuuust一點有點多的工作。

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />"; 
var pattern:RegExp = /<br \/>/g; 
var postAddress = importPostAddress.replace(pattern,", "); 

在爲了通過/克標誌,這使得更換全球(替換找到的表達的所有實例)我使用RegExp。我還必須使用反斜槓\作爲正則表達式中的控制字符來跳過/<br />

+0

嗨山姆感謝您的回覆。你使用'/'而不是引號來定義一個字符串?這是否有效地說:'var pattern:RegExp =「
」g;'?或'「
」/ g;' – 2012-03-23 10:21:36

+0

@CraigMcArthur您可以使用'/'而不是引號來定義'RexExp'。這基本上說,替換模式(在這種情況下,模式沒有特殊的正則表達式特徵,所以它實際上是一個字符串)'**
** **全局**。 – 2012-03-23 12:24:39

20

山姆有一個很好的解決方案,另一個是:

postAddress = importPostAddress.split("<br />").join(","); 
+1

+1,也是一個很好的解決方案。 – 2012-03-21 14:14:59

+1

對於我來說,這是唯一的解決方案,**對**而言,它是一種痛苦......用RegExp替換所有沒有**硬編碼**的字符串到您的代碼中。也許我想替換'n',也許'反斜槓',或者**用戶**想要輸入我需要從字符串中移除的隨機字符。 – Bitterblue 2014-12-16 13:49:53

+1

另外,更具可讀性。 – thameera 2014-12-22 06:20:49

相關問題