|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Array Clear - Regex
Buenas, me vi en la necesidad de limpiar las matrices de una variable a partir de un determinado número, en mi caso a partir de 100 concretamente, y Tasker no ofrece ninguna solución fácil o al menos que yo conociera para hacerlo.
Después de muchas vueltas y teniendo en cuenta una de las novedades de Tasker 5.0 (Utilizar regex en lugares que antes únicamente se podía utilizar coincidencia de patrones de Tasker), lo he logrado de la siguiente manera. Acción: Limpiar variable. ~R%Variable\d\d\d Conincidencia de Patrón: ON Local Variables Only: OFF Para el que no haya utilizado nunca regex, cada \d representa un dígito del 0 al 9. Creo que es una forma simple y efectiva de conseguirlo y lo comparto por si a alguien le puede interesar. Un saludo. |
| Los siguientes 2 usuarios han agradecido a Rsc su comentario: | ||
|
|
|
#2
|
||||
|
||||
|
Para esto Regex creo que es matar moscas a cañonazos. Yo usaría Javascript, mucho más sencillo que Regex y que aunque puedes usar una acción Scriptlet de Tasker con una sola linea de código exclusívamente para este uso.
Si vas a usar intensivamente arrays JS es muy recomendable de todos modos, precisamente por su facilidad para manejar arrays comparado con Tasker nativo. Y también te permite usar Regex si fuese necesario. Por ej: variable.splice(100,9999); // borra 9999 elementos a partir del 100 variable.splice(100,variable.length); // borra todos los elementos a partir del 100 |
| Los siguientes 2 usuarios han agradecido a danko9696 su comentario: | ||
|
#3
|
||||
|
||||
|
Gracias @danko9696. Uso a veces JS, pero sobretodo lo hago para reducir el número de acciones en las tareas, ya que no se hacer nada más que no sea las acciones de Tasker que figuran en la guía de JS de Tasker o alguno que otro ejemplo que veo en el foro y me voy guardando en un proyecto que tengo en Tasker con ejemplos de JS.
Por cierto, algo estaré haciendo mal que no me funciona el ejemplo que has puesto. He probado: Variable.splice(100,9999); global.Variable.splice(100,9999); setGlobal.Variable.splice(100,9999); |
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Si no te funciona es seguramente porque (por lo que veo) el array es de una variable global, y si bien las variables y arrays son vistas de forma transparente Tasker-JS, no es así cuando se trata de variables globales. Una pega que no es tanto cuando deberías usarlas al mínimo, porque son más lentas y pueden dificultar depurar el código cuando hay errores.
Un ejemplo que funciona directamente usando una variable local, creada en JS o puede existir previamente. Código:
var v_mat_prueba = "a,b,c,d,e,f".split(","); // creo array local. puede estar creado desde acciones de Tasker pero debe ser local (nombre de variable en minúsculas)
flash(v_mat_prueba.join(",")); // muestra el contenido antes
v_mat_prueba.splice(3,22); // 22 por poner algo, podría haber usado el length
flash(v_mat_prueba.join(",")); // muestra el contenido después
Código:
var v_cad = global("v_Array_Global").split(",");
v_cad.splice(3,22);
setGlobal("v_Array_Global",v_cad.join(","));
Lo único que no puedes hacer en JS es lanzar plugins, pero salvo eso todo lo demás se puede, que yo sepa. |
| Gracias de parte de: | ||
|
#5
|
||||
|
||||
|
//////////////// /////////////// Con los ejemplos que has puesto lo he entendido perfectamente, aunque reconozco que he tenido que buscar para entender a que te referías con "aplicar un join" He oído varias veces hablar de ella, pero como me acostumbré a Autoremote, al final nunca me la instalo. Lo siguiente que voy a hacer cuando te conteste, será probar la app. Muchas gracias de nuevo, un saludo. |
| Gracias de parte de: | ||
|
#6
|
||||
|
||||
|
No creo que tenga mucho que ver. Yo uso ambos. Autoremote para comunicar entre androides y JOIN exclusívamente para copia/pega entre android y pc. Si no fuese por esta app (u otra del estilo) seguramente no usaría JS salvo para cosas muy muy contadas en lugar de usarlo por defecto para todo. Resulta mucho más cómodo y rápido una vez estás acostumbrado, usando una pantalla grande y ratón/teclado, con código con el que puedes extenderte en los comentarios si quieres, para copiarlo y pegarlo en Tasker. Tengo algún proyecto que con acciones de Tasker no habría hecho ni loco, de lo lioso y lento que habría resultado en una pantalla pequeña y un interfaz táctil.
|
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||