Acceder

Ver la Versión Completa : [ CONSULTA ] Problema al reemplazar contenido de variable


darkopro
10/02/14, 13:19:41
Tengo una variable %Perfiles que de establece a perfiles activos (%PENABLE). Algunos de mis perfiles empiezan con un guión (-NOCHE) lo que intento es borrar de la variable %Perfiles los perfiles que comienzan con un guión. Para ello uso buscar y reemplazar contenido de variable, buscar -*, señalo reemplazar pero pongo nada. Cuando hago esto, me desaparecen las comas (,) y me queda la variable perfiles de la siguiente manera: -NOCHECOCHE-CAMBIOHORAGIMNASIOCASA...
¿Qué es lo que hago mal?¿Qué expresión sería la correcta en este caso?

Caravantes
10/02/14, 18:57:36
uso buscar y reemplazar contenido de variable, buscar -*,

Si vas a reemplazar no puedes buscar por ASTERISCOS, eso no funciona bien. Por ejemplo, si la variable contiene
,-NOCHE,COCHE,-CAMBIOHORA,GIMNASIO,CASA,
la búsqueda de -* (guión verde, asterisco rojo) pordía interpretarse del siguiente modo:
,-NOCHE,COCHE,-CAMBIOHORA,GIMNASIO,CASA,
y por tanto al sustituir solo te quedaría la coma inicial.

Te propongo una alternativa un poco más larga pero que creo que funcionará bien.

- Establecer variable %singuiones y la estableces a , (una coma) En esta nueva variable irás añadiendo los perfiles que no comienzan por guión.
- Separar variable %Perfiles)usando las comas como divisor. De esta forma obtienes una matriz del tipo
%PENABLE1 -NOCHE
%PENABLE2 COCHE
%PENABLE3 CASA
etc.
- Luego te haces un bucle FOR que procese individualmente cada elemento de esa matriz.
Dentro del bucle FOR puedes poner condiciones y acciones que solo se aplicarán cuando el elemento comienza por un guión, o para el caso contrario. Por ejemplo, puedes poner una acción...
- Establecer variable %singuiones a ese elemento, añadir SI, bajo la condición: si el elemento NO comienza por guión (cuando el elemento comienza por guión no se añade a la variable %singuiones).
- Fin del bucle FOR.
Y así finalmente tienes en la variable %singuiones todos los perfiles activos que carecen de guión inicial en su nombre.

Ya se planteó un problema muy similar, en el hilo siguiente, te sugiero que lo mires completo
http://www.htcmania.com/showthread.php?t=709554

darkopro
10/02/14, 19:35:43
Si vas a reemplazar no puedes buscar por ASTERISCOS, eso no funciona bien. Por ejemplo, si la variable contiene
,-NOCHE,COCHE,-CAMBIOHORA,GIMNASIO,CASA,
la búsqueda de -* (guión verde, asterisco rojo) pordía interpretarse del siguiente modo:
,-NOCHE,COCHE,-CAMBIOHORA,GIMNASIO,CASA,
y por tanto al sustituir solo te quedaría la coma inicial.

Te propongo una alternativa un poco más larga pero que creo que funcionará bien.

- Establecer variable %singuiones y la estableces a , (una coma) En esta nueva variable irás añadiendo los perfiles que no comienzan por guión.
- Separar variable %Perfiles)usando las comas como divisor. De esta forma obtienes una matriz del tipo
%PENABLE1 -NOCHE
%PENABLE2 COCHE
%PENABLE3 CASA
etc.
- Luego te haces un bucle FOR que procese individualmente cada elemento de esa matriz.
Dentro del bucle FOR puedes poner condiciones y acciones que solo se aplicarán cuando el elemento comienza por un guión, o para el caso contrario. Por ejemplo, puedes poner una acción...
- Establecer variable %singuiones a ese elemento, añadir SI, bajo la condición: si el elemento NO comienza por guión (cuando el elemento comienza por guión no se añade a la variable %singuiones).
- Fin del bucle FOR.
Y así finalmente tienes en la variable %singuiones todos los perfiles activos que carecen de guión inicial en su nombre.

Ya se planteó un problema muy similar, en el hilo siguiente, te sugiero que lo mires completo
http://www.htcmania.com/showthread.php?t=709554

Mil gracias Caravantes, menuda memoria tienes por cierto!

Caravantes
11/02/14, 00:25:29
Mil gracias Caravantes, menuda memoria tienes por cierto!

No creas. En casos como éste tengo un recuerdo vago sobre el tema. Entonces pienso en las palabras claves que puedo utilizar con el buscador del foro para localizar el hilo concreto. Las palabras Tasker y Caravantes suelen estar en casi todas mis búsquedas porque son relativas a este foro y busco hilos en los que he participado. En este caso hice la búsqueda siguiente
tasker caravantes %PENABLED perfiles
Y encontré lo que buscaba en los dos primeros resultados.
Otras veces no consigo encontrar nada interesante a la primera; cambio las palabras clave y repito la búsqueda, tras varios intentos acabo acertando... o no: hay veces que desisto después de haber perdido 10 minutos sin éxito.

El buscador del foro es una herramienta estupenda, pero hay que saber utilizarla y hay que tener paciencia.

maid450
11/02/14, 07:26:51
Tengo una variable %Perfiles que de establece a perfiles activos (%PENABLE). Algunos de mis perfiles empiezan con un guión (-NOCHE) lo que intento es borrar de la variable %Perfiles los perfiles que comienzan con un guión. Para ello uso buscar y reemplazar contenido de variable, buscar -*, señalo reemplazar pero pongo nada. Cuando hago esto, me desaparecen las comas (,) y me queda la variable perfiles de la siguiente manera: -NOCHECOCHE-CAMBIOHORAGIMNASIOCASA... ¿Qué es lo que hago mal?¿Qué expresión sería la correcta en este caso?

En este caso se puede hacer en una sola acción con una expresión regular.
Tienes que hacerlo tal cual lo estabas haciendo, pero en vez de "-*," tienes que buscar "-.*?," y reemplazar por nada.

darkopro
11/02/14, 09:05:26
En este caso se puede hacer en una sola acción con una expresión regular.
Tienes que hacerlo tal cual lo estabas haciendo, pero en vez de "-*," tienes que buscar "-.*?," y reemplazar por nada.

Mil gracias Maid, más tarde lo integraré así ;)






El buscador del foro es una herramienta estupenda, pero hay que saber utilizarla y hay que tener paciencia.

Yo es que el 99.9% de las veces uso Tapatalk y yo creo que tiene buscador propio (que es la máxima basura del universo) porque en ningún foro me encuentra nunca nada. O es muy muy malo o los foros tienen que integrarlo a posta porque no es normal que nunca me encuentre nada relacionado, aunque ponga una palabra.