2012-03-21 29 views
17

Trong Flash ActionScript 3, tôi đang cố gắng làm điều gì đó mà tôi nghĩ là đơn giản: thay thế tất cả các cụm từ trong chuỗi văn bản bằng cụm từ khác. Tuy nhiên, đối với một số lý do chỉ có trường hợp đầu tiên được thay thế và phần còn lại bị bỏ qua. Tôi đã hack một giải pháp với nhau bằng cách chạy nó thông qua chuỗi thay thế chức năng khoảng 9 lần để kết quả cuối cùng có tất cả các <br /> thay thế nhưng tôi muốn biết những gì tôi đã làm sai. Cảm ơn trước!ActionScript 3 .replace() chỉ thay thế trường hợp đầu tiên

Mã của tôi:

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

Kết quả mong đợi khi truy tìm postAddress:

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

kết quả thực tế:

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

Trả lời

28

Để khắc phục điều này, bạn cần làm juuuust một chút làm việc nhiều hơn một chút.

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

Tôi đang sử dụng một RegExp để thông qua cờ /g, mà làm cho việc thay thế toàn cầu (thay thế tất cả các trường của biểu thức tìm thấy). Tôi cũng đã phải thoát khỏi / trong <br /> bằng cách sử dụng dấu gạch chéo ngược \, làm ký tự điều khiển trong biểu thức chính quy.

+0

Hi Sam nhờ trả lời của bạn. Bạn có sử dụng '/' thay vì dấu ngoặc kép để xác định một chuỗi không ?? Điều này có hiệu quả nói: 'var pattern: RegExp ="
"g;'? hoặc '"
"/ g;' –

+0

@CraigMcArthur Bạn sử dụng '/' thay vì dấu ngoặc kép để xác định một 'RexExp'. Điều này về cơ bản nói rằng thay thế các mẫu (trong trường hợp này mô hình không có đặc điểm regex đặc biệt, vì vậy nó thực tế là một String) '
' ** trên toàn cầu **. –

20

Sam có một giải pháp tốt, một số khác là:

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

+1, cũng là một giải pháp tốt. –

+1

Đối với tôi đây là giải pháp duy nhất, ** cho ** đó là một nỗi đau trong ... để thay thế tất cả các chuỗi được ** không mã hóa cứng ** vào mã của bạn bằng RegExp. Có lẽ tôi muốn thay thế 'n', có thể' dấu gạch chéo ngược' hoặc có thể là ** người dùng ** muốn nhập các ký tự ngẫu nhiên mà tôi cần phải xóa khỏi chuỗi. – Bitterblue

+1

Ngoài ra, dễ đọc hơn. – thameera

Các vấn đề liên quan