¿Quieres registrarte?

Editar texto con expresiones regulares en Actionscript 3

Por: Zguillez
10 de Enero del 2009
7273 de clabLevel
Otros artículos de Zguillez
3,191 visitas

La clase String dispone de un método replace() que nos permite reemplazar parte del texto por otro. Esto nos puede resultar muy útil no solo para editar campos de texto grandes, si no para realizar simples acciones de programación.

Un ejemplo podría ser utilizar este método para saber el ID del botón que ejecutó una acción. Por ejemplo, tenemos una serie de botones con un nombre secuencial que todos ejecutan la misma acción, pero que debe pasar como parámetro el numero de la secuencia para ejecutar la acción de manera diferente.

Código :

boton1.addEventListener(MouseEvent.CLICK, onClickBoton);
boton2.addEventListener(MouseEvent.CLICK, onClickBoton);
boton3.addEventListener(MouseEvent.CLICK, onClickBoton);
//etc..

function onClickBoton(e:Event):void
{
   var id:uint = uint(e.target.name.replace(RegExp(/boton/), ""));   
   trace("me clicó el botón numero " + id);
}


Dando uso de las expresiones regulares se crea un patrón que le dice al método replace() que sustituya el texto "boton" del nombre del botón por nada, con lo que nos quedamos solo con el numero de la secuencia... A partir de ahi ejecutamos las acciones que queramos.

Otro ejemplo de uso práctico de método es editar partes de direcciones URL. Por ejemplo, tenemos una serie de archivos XML situados en diferentes carpetas con la misma estructura:

http://www.dominio.com/usuarios/1320/datos/archivo.xml
http://www.dominio.com/usuarios/1321/datos/archivo.xml
http://www.dominio.com/usuarios/1322/datos/archivo.xml
etc..

En este caso podríamos tener un URL genérica de acceso global definiendo que esa carpeta en concreto será variable:

Código :

private var _xmlURL:String = "http://www.dominio.com/usuarios/#id#/datos/archivo.xml"


Y para utilizar esta url, unicamente sustituiremos el nombre de la carpeta por la que necesitemos en cada llamada.

Código :

_urlRequest.url  = Global.getXmlURL().replace(RegExp(/#id#/), _id); 


Donde "getXmlURL" es un getter de la clase donde guardamos los datos globales que nos devuelve la cadena de texto, y "_id" es la variable que define el nombre de la carpeta real.

Espero les sea útil ;)

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas actionscript_3

Comentarios | Enviar un comentario
jeje, genial ^^ genial
Por: eldervaz
Desde luego, o trabajas como loco, o eres un ocioso con demasiada creatividad (o ambos). Me encantó.
Por: The Fricky!
Hey! Que buen Tip, Zguillez...
:o
Por: M@U
No lo he probado, pero no funcionaria igual quitando el RegExp???? Es decir, haciendo var id:uint = uint(e.target.name.replace("boton", ""));
Por: SdR-blog
Interesante pero no se ve ninguna expresión regular en uso y estoy de acuerdo con SdR.

Otro ejemplo sería:

Código :

var dato:String = "Nombre - Apellido/Edad";
//Esta plantilla es la misma que "dato" pero en veste de los textos tiene (.+)
var plantilla:String = "(.+) - (.+)\/(.+)";
//la nueva forma que tomará
var nuevaPlantilla:String = "$2 - $1 / $3";

trace( dato );
trace( dato.replace(new RegExp(plantilla,'i'), nuevaPlantilla) );

Mostrará:
Original: Nombre - Apellido/Edad
Nuevo: Apellido - Nombre / Edad

Como se ve, los $1, $2, $3 representan a los (.+) en orden, así se pudo reordenar según la nueva plantilla o a cualquier otra forma. Por ejm: "$2" o "$2, $1" o "$1 ($3)".

Es algo dificil al inicio familiarizarse con las expresiones regulares, pero sirven de mucho! :)
*tengo que hacer un tips de esto.
Por: Otaku RzO
Si, eso quería decir. La idea es buena, pero los ejemplos que das no muestran lo que son las expresiones regulares: funcionan solo con la función replace.
Por: SdR

SdR-blog :

Si, eso quería decir. La idea es buena, pero los ejemplos que das no muestran lo que son las expresiones regulares: funcionan solo con la función replace.

Si bueno, quizás el ejemplo fue demasiado sencillo para que la gente no familiarizada con las expresiones regulares lo entendiese fácil.
Acostumbrarse a utilizarlas aun en casos en que quizás no hicieran falta, hace que cuando quieras hacer un cambio más complejo los conocimientos básicos para hacerlo ya los tienes..
por ejemplo, tu tuvieses: http: //www.dominio.com/usuarios/#id#/datos/#id#.xml
con RegExp(/#id#/g) sustituiría en todos los casos.. cosa que con un replace normal no podrias hacer de una vez
Por: Zguillez
Articulo muy meticuloso
Por: RENEGADO-blog
articulo interesante, lo tendre en cuenta
Por: Gonzalo-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.