Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 02/08/17, 16:36:54
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
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.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a Rsc su comentario:


  #2  
Viejo 02/08/17, 17:46:46
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
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
Responder Con Cita
Los siguientes 2 usuarios han agradecido a danko9696 su comentario:
  #3  
Viejo 02/08/17, 19:05:41
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
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);
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 02/08/17, 21:03:24
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
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
Si tienes un array ya creado con una variable global entonces no funcionaría, aunque sí con un join de por medio. Ahora pon que tienes una variable global llamada v_Array_Global que contiene "a,b,c,d,e,f" y al que recién le has aplicado un JOIN para poder ser manejado desde JS:

Código:
var v_cad = global("v_Array_Global").split(",");
v_cad.splice(3,22);
setGlobal("v_Array_Global",v_cad.join(","));
Sobre lo de usar JS solo para acciones de Tasker debes tener en cuenta que te vale cualquier ayuda sobre javascript. Por ejemplo puedes buscar "javascript remove element from array" o "javascript remove array". Y recuerda, si usas la app JOIN puedes escribir el código en el PC, donde se ve y escribe mucho mejor y cuando termines copiar el texto y pegarlo en android. Mucho mejor todavía si usas un editor de texto con pestañas (como notepad++), donde puedes tener a mano código de otras acciones o tareas que puedes reutilizar inmediatamente.

Lo único que no puedes hacer en JS es lanzar plugins, pero salvo eso todo lo demás se puede, que yo sepa.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 03/08/17, 01:16:38
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
 Cita: Originalmente Escrito por danko9696 Ver Mensaje
Si no te funciona es seguramente porque (por lo que veo) el array es de una variable global
Correcto el array parte de una variable global. Uso JS para establecer la mayoría de las variables locales y globales de mis proyectos, y hago referencia a ellas, y para eso en principio si que no he tenido ningún problema.

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
deberías usarlas al mínimo, porque son más lentas y pueden dificultar depurar el código cuando hay errores.
Ya te lo he leído en más de una ocasión, y es una tarea que tengo pendiente. Quiero "optimizar" por decirlo de alguna manera, todos los proyectos que tengo en Tasker, disminuyendo el uso de variables Globales.

//////////////// ///////////////

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"

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
si usas la app JOIN puedes escribir el código en el PC
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.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 03/08/17, 12:18:33
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por Rsc Ver Mensaje
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.
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.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 17:20:36 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /