2012-03-21 16 views
17

En Flash ActionScript 3, intento hacer algo que pensé que era simple: reemplace todas las instancias de una frase en una cadena de texto con otra frase. Sin embargo, por alguna razón, solo se reemplaza la primera instancia y el resto se ignora. He pirateado una solución al ejecutarla a través de la función de reemplazo de cadena alrededor de 9 veces, por lo que el resultado final ha reemplazado todos los <br />, pero me gustaría saber qué he hecho mal. ¡Gracias por adelantado!ActionScript 3 .replace() solo reemplaza la primera instancia

Mi Código:

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

Resultado esperado al trazar postAddress:

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

Resultado real:

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

Respuesta

28

Con el fin de solucionar este problema, lo que necesita hacer juuuust un poco un poco más de trabajo.

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

estoy usando un RegExp con el fin de pasar el indicador /g, lo que hace la sustitución mundial (reemplace todas las instancias de la expresión encontrado). También tuve que escapar de / en <br /> usando una barra invertida \, ya que es un carácter de control en expresiones regulares.

+0

Hola Sam gracias por su respuesta. ¿Utiliza '/' en lugar de comillas para definir una cadena ?? ¿Esto dice efectivamente: 'var pattern: RegExp ="
"g;'? o '"
"/ g;' –

+0

@CraigMcArthur Utiliza '/' en lugar de comillas para definir un 'RexExp'. Esto básicamente dice reemplazar el patrón (en este caso el patrón no tiene características especiales de expresión regular, por lo que es prácticamente una cadena) '
' ** globalmente **. –

20

Sam tiene una buena solución, otra es:

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

+1, también una buena solución. –

+1

Para mí, esta es la única solución, ** para ** es un dolor en el ... para reemplazar todas las cadenas que ** no están codificadas de forma rígida ** en su código con RegExp. Tal vez quiero reemplazar 'n', tal vez' backslash' o tal vez el ** usuario ** quiera ingresar caracteres aleatorios que necesito eliminar de las cadenas. – Bitterblue

+1

Además, más legible. – thameera

Cuestiones relacionadas