2012-03-21 17 views
17

Flash ActionScript 3'te, basit olduğunu düşündüğüm bir şeyi yapmaya çalışıyorum: bir tümcenin tüm örneklerini bir metin dizesinde başka bir deyimle değiştirin. Ancak, bir sebepten dolayı sadece ilk örnek değiştirilir ve geri kalanlar göz ardı edilir. Dize yerine işlevi yaklaşık 9 kez çalıştırarak bir çözüm hackledim böylece sonuçta tüm sonuç <br /> değiştirildi ama ne yanlış yaptığımı bilmek istiyorum. Şimdiden teşekkürler!ActionScript 3 .replace() yalnızca ilk örneği değiştirir

Benim Kod:

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

Beklenen sonuç postAddress izleme:

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

Gerçek sonucu:

, sen juuuust biraz yapmanız gereken Bunu düzeltmek için
123 Fake Street, Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br /> 

cevap

28

biraz daha iş. yerine küresel (bulunan tüm ifade örneklerini değiştirmek) yapar /g bayrağı geçmek üzere

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,", "); 

bir RegExp kullanıyorum. Ayrıca, normal ifadelerde bir kontrol karakteri olarak <br />\ bir ters eğik çizgi kullanarak / kaçmak zorunda kaldı.

+0

Merhaba Sam teşekkürler. Bir dizeyi tanımlamak için tırnak yerine '/' kullanıyor musunuz? Bu etkili bir şekilde söyler: 'var pattern: RegExp = "
" g; '? veya '"
"/ g;' –

+0

@CraigMcArthur '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'tanımlamak için kullanılan tırnaklar yerine'/'kullanırsınız. Bu temelde kalıbın yerini alır (bu durumda desenin özel bir regex özelliği yoktur, bu yüzden pratikte bir String'dir).
'** globally **. –

20

Sam iyi çözümü vardır, başka biri: Cevabınız için

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

+1, ayrıca iyi bir çözüm. –

+1

Benim için bu tek çözümdür, ** için **, sabit kodlanmış ** olmayan tüm dizeleri RegExp ile kodunuza yerleştirmek için bir acıdır. Belki de 'n', belki 'backslash' yerine koymak istiyorum veya belki ** kullanıcı ** dizelerden kaldırmam gereken rastgele karakterler girmek istiyor. – Bitterblue

+1

Ayrıca, daha okunabilir. – thameera