Ver la Versión Completa : Parsear un texto partiéndolo por longitud
Ptahotep
29/11/15, 16:56:30
Hola, estoy tratando de parsear un texto largo para mostrarlo en trocitos (para enviarlo a una smartband).
Estoy atascado en lo básico: partir el texto usando el espacio como separador. Y luego mostrar el array resultante, palabra a palabra.
http://images.tapatalk-cdn.com/15/11/29/4befd8be59188288ed4c9f2732a9a4e9.jpg
Lo que quiero que salga aquí es:
Hola ... como ... estas ...
Pero mi objetivo final es, que dado el máximo de caracteres a mostrar de una vez, por ejemplo por línea, me parta el texto para se lea línea a línea. Vamos, que si mi máximo de caracteres es 10 y tengo el siguiente texto:
Hola como estas tu, lo llevas bien?
Me lo parta así:
Hola como
estas tu,
lo llevas
bien?
Como se puede comprobar, todas las líneas tienen 10 caracteres o menos.
Toda ayuda será bienvenida... Gracias.
Utiliza regex en el separar variable a ver que tal. Te pueden ser utiles los signos \w \W.
Si das con la "formula" entonces ya lo tienes todo en el array.
Enviado desde mi T1-701u mediante Tapatalk
Ptahotep
29/11/15, 19:37:44
Utiliza regex en el separar variable a ver que tal. Te pueden ser utiles los signos \w \W.
Si das con la "formula" entonces ya lo tienes todo en el array.
Enviado desde mi T1-701u mediante Tapatalk
Gracias como siempre, mlesir. Ya consigo recorrer el array, pero no sé cómo hacer que me interprete las regex. Pego lo que he conseguido. En el tercer paso debería salirme «Como», pero me sale toda la frase. Lo que estoy simulando es el separador espacio, con \s
http://images.tapatalk-cdn.com/15/11/29/d498078429a22b7953921930c9ddaf3a.jpg
Ptahotep
29/11/15, 20:14:09
En la acción buscar y reemplazar si me funciona, y quizás podría ser la clave. Pero, hay forma de reemplazar por el patrón encontrado más algo más? Por ejemplo, algo así:
Var="Hola que tal"
[^\s]{3}\s -> $&\s\s
Siendo $& el patrón de búsqueda, en este caso 3 caracteres no-espacios
Edit: vale, esto ya lo tengo, con $0
Disculpame! Me olvide que separar variable no acepta regex.
Buscar y reemolazar si.
Te pongo lo que he probado para que te sirva de guia:
Phatopep (210)
A1: Establecer variable [ Nombre:%aab A:hola como estas Calcular:Apagado Añadir:Apagado ]
A2: Buscar y Reemplazar Contenido de Variable [ Variable:%aab Buscar:\w+(\s|$) Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En:%aaa Reemplazar Coincidencias:Apagado Reemplazar Con: ]
A3: Flash [ Texto:%aaa
%aaa0
%aaa1
%aaa2
%aaa3 Largo:Encendido ]
He puesto todas las variables en el flash para que se vea que variables produce y las que no. Evidentemente es mas que mejorable. Yo creo q se puede hacer con regex lo que quieres. Que te coja los trozos con una longitud maxima pero sin cortar las palabras. Te tendras que pelear con el regex... mola pero puede ser a veces frustrante.
(Como veras utilizar exportar la tarea como descripción a portapapeles ademas de ser mas rapido es mas completo, hace mas ligero navegar por los post, lo puedes copiar, citar, etc).
Enviado desde mi T1-701u mediante Tapatalk
Ptahotep
29/11/15, 22:26:23
Al final, con algo tan simple como esto consigo lo que estaba buscando:
.{1,15}(\s|$)
Así lo tengo todo separado en líneas de 15 caracteres. El problema es que ahora lo tengo que unir todo en una sola variable, haciendo que cada elemento tenga exactamente 15 caracteres, y así no se me corten palabras en diferentes líneas.
Ptahotep
30/11/15, 21:36:49
No hay forma de saber la longitud de la cadena contenida en una variable, no?
Enviado desde mi SM-T320 mediante Tapatalk
Si con la acción de variable probar, en tipo pones longitud.
Enviado desde mi T1-701u mediante Tapatalk
Ptahotep
03/12/15, 21:33:23
Estoy atascado casi en el paso final. Hay alguna forma de añadir espacios al final de una variable?
Tengo un número negativo al que le voy sumando 1 en cada ciclo, y con «ir a» vuelvo a sumarle 1, hasta que el número llega a 0. Además de sumar 1, quiero ir añadiendo espacios sucesivamente a mi texto, hasta que la tarea continua y me muestra todo el texto por pantalla.
Pero no encuentro la forma de ir añadiendo espacios. He probado con concatenar, pero creo que no entiendo muy bien su uso.
Con establecer variable puedes hacerlo solo tienes que marcar el parametro añadir.
Cuando lo tengas montado si puedes compartirlo te lo agradeceria.
Enviado desde mi T1-701u mediante Tapatalk
Ptahotep
05/12/15, 15:50:17
Conseguido! Muchas gracias, aquí lo pego. La verdad es que es la tarea más compleja que creo, gracias a ti.
Split Text Test (115)
A1: Establecer variable [ Nombre:%texto A:En un lugar de la Mancha de cuyo nombre no quiero acordarme Calcular:Apagado Añadir:Apagado ]
A2: Buscar y Reemplazar Contenido de Variable [ Variable:%texto Buscar:.{1,16}(\s|$) Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En:%lines Reemplazar Coincidencias:Apagado Reemplazar Con:$0... ]
A3: For [ Variable:%xxx Ítems:%lines() ]
A4: Probar Variable [ Tipo:Longitud Datos:%xxx Almacenar Resultado en:%long ]
A5: Restar de variable [ Nombre:%long Valor:17 Módulo (wrap around):0 ]
A6: Sumar a variable [ Nombre:%long Valor:1 Módulo (wrap around):0 ]
A7: Establecer variable [ Nombre:%espacios A: Calcular:Apagado Añadir:Encendido ] Si (if) [ %long nig 0 ]
A8: Ir a acción [ Tipo:Número Acción Número:6 Etiqueta: ] Si (if) [ %long < 0 ]
A9: Establecer variable [ Nombre:%lines A:%xxx Calcular:Apagado Añadir:Encendido ]
A10: Establecer variable [ Nombre:%lines A:%espacios Calcular:Apagado Añadir:Encendido ] Si (if) [ %espacios Ajuste ]
A11: Limpiar variable [ Nombre:%espacios Coincidencia de Patrón:Apagado ]
A12: End For
A13: Notificación [ Título:%lines Texto: Icono:hd_content_email Número:0 Permanente:Apagado Prioridad:3 ]
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.