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

Respuesta
 
Herramientas
  #1  
Viejo 09/12/14, 20:19:39
Array

[xs_avatar]
mlesir mlesir no está en línea
Usuario muy activo
 
Fecha de registro: abr 2012
Mensajes: 2,263
Modelo de smartphone: OnePlus One,BQ Edison1, GoogleChrome,
Tu operador: Pepephone
La verdad es que el tema lo tengo solucionado de otra manera pero me jode cantidad no conseguirlo con regex.
Lo que quiero es esto:
Tengo una variable (%Var) con cinco lineas de texto separadas por un salto de linea o intro, por ejemplo:
%Var= linea uno
linea dos
linea tres
linea cuatro
linea cinco
Lo que quiero es que mediante la acción de buscar y reemplazar de tasker cada intro que encuentre lo sustituya por "
%for:" ( o sea por intro %for: ). La variable %for es la variable que va cogiendo todos los valores de un array que digamos que son A, B,C,D,E.
Lo de poder meter un intro en el parámetro para sustituir se puede hacer poniendo una variable que se iguale a intro ya que no te deja escribir un intro en ese parametro. Así que finalmente lo que quiero es que %Var se quede así:

A: linea uno
B: linea dos
C: linea tres....
etc.

El problema claro es que como metes un intro como sustitución la siguiente pasada que hace FOR encuentra coincidencia con lo ya sustituido (Lo de meter el intro en la sustitución no es opcional tengo que hacerlo si o si).
Por eso lo que quiero es poder decirle que sustituya en la primera pasada la primera coincidencia, en la segunda solo la segunda. Creo que se podría hacer indicando que no lo sustituya si no va precedido ese intro de X intro siendo X una variable a modo de contador que va aumentando.
No se si me he explicado muy bien. En resumidas cuentas lo que quiero es poder decirle que solo sustituya el intro si (por ejemplo ) hay antes tres intros.
Gracias.

EDITO: Se me olvida comentar que solo quiero que sustituya el intro ni lo de antes ni lo de después.
Probado los paréntesis {n} los (?=lo que sea) etc y nada no hay manera.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969

Última edición por mlesir Día 09/12/14 a las 20:25:41.
Responder Con Cita


  #2  
Viejo 12/12/14, 10:42:29
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
Me parece que con expresiones regulares no podrías conseguir esto, al menos no de forma simple.
Personalmente usaría un javascriptlet que haría esto muy rápido:
Código:
var txt = global('Var');
var letras = ['A','B','C'];
txt = txt.split('\n');
txt = txt.map(function(line, index) { return letras[index] + ': ' + line;});
setGlobal('Var', txt.join('\n'));
explico linea a linea:
Código:
var txt = global('Var');
almacenamos el contenido de %Var en una variable local txt para trabajar más comodamente con ella, si %Var no tiene por qué ser global puedes omitir esto y reemplazar en las demás lineas "txt" por el nombre de la variable tasker (sin el %)
Código:
var letras = ['A','B','C'];
Declaramos el array de letras, si lo defines desde Tasker cambia en el resto del script "letras" por el nombre del array sin el %
Código:
txt = txt.split('\n');
troceamos el texto por los saltos de linea (intros) es como la acción "separar" de tasker, asi que ahora txt será un array.
Código:
txt = txt.map(function(line, index) { return letras[index] + ': ' + line;});
esta es la que hace el trabajo, usamos la función map que lo que hace es dejarnos ejecutar una funcion para cada elemento de un array, y esta funcion concatena la letra de la posicion en la que estemos con un ": " y el contenido de la linea. Esto se podría hacer con un for, pero así es mucho más eficiente y rápido
Código:
setGlobal('Var', txt.join('\n'));
guardamos de nuevo en %Var el resultado de unir el array resultante (algo del tipo [A: linea 1, B: linea 2,...]) con saltos de linea (es como un "separar" inverso)
Responder Con Cita
Gracias de parte de:
Respuesta

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



Hora actual: 06:37:44 (GMT +2)



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

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