Servicio IniSplitString
INTRODUCCIÓN
Este servicio permite dividir un string de entrada en partes de longitudes variables según los
valores definidos en el parámetro Largos, y opcionalmente asegura que los cortes se realicen
respetando palabras completas si se indica.
INFORMACIÓN GENERAL
Nombre del servicio: IniSplitString
Clase: IniSplitStringBean
JNDI: nodum/servicios/genericos/ini/IniSplitString
Tipo: Inicialización
Módulo: General
Repetitivo: No
PARÁMETROS DE ENTRADA
| N° | Parámetro | Literal | Obligatorio | Modificable | Notas |
| 1 | String | String de entrada | Sí | Sí | Texto que se desea dividir. |
| 2 | Largos |
Largos a subdividir el string
|
Sí | Sí | Valores separados por ; indicando el largo de cada parte. |
| 3 | Considera palabras completas (S,N) |
Considera palabras completas (S,N) |
Sí | Sí | Si se indica S, se evita cortar palabras por la mitad. |
FORMATO DE SALIDA
Object[][] Una fila con N columnas, donde cada columna contiene un fragmento.
LÓGICA DEL SERVICIO
1. Preprocesamiento del texto:
-
Se eliminan comillas simples iniciales y finales.
2. Lectura de largos:
-
El parámetro Largos se separa por ; determinando cuántos caracteres deberá tener cada fragmento.
3. Corte del string:
-
Para cada valor en Largos:
-
Si el texto restante tiene menos caracteres que el largo actual, se toma todo el resto.
-
Si BloquePalabra = S, se busca el espacio anterior más cercano para evitar cortar palabras.
-
Si no se encuentra un espacio válido, o BloquePalabra = N, se corta exactamente en el largo especificado.
-
El segmento se guarda en el arreglo de salida.
4. Salida:
-
El resultado es un array unidimensional donde cada posición contiene una parte del texto original.
-
Se retorna como una fila con varias columnas (una por receptor).
CONSIDERACIONES TÉCNICAS
-
Si se ingresan largos no numéricos, se lanza una excepción con mensaje indicando el índice incorrecto.
-
Si el texto se termina antes de completar todos los largos, se deja de procesar.
-
Es útil para dividir descripciones largas en campos de texto limitados por cantidad de caracteres.
EJEMPLO
String: 'Hola esto es una prueba para dividir'.
Largos: '5;10;15'.
(El texto será dividido en fragmentos de máximo 5, 10 y 15 caracteres, en ese orden)
BloquePalabra: 'S'.
(Se indica que debe cortar respetando palabras completas, no partir palabras a la mitad)
Fragmento 1: Máximo 5 caracteres
-
Texto restante: "Hola esto es una prueba para dividir'
-
Se busca el espacio posterior al carácter en índice 5-> está en posición 9
-
Luego se retrocede al último espacio antes de eso > está en índice 4
-
Se corta en índice 4 + 1->"Hola"
-
Texto restante: 'esto es una prueba para dividir'
Fragmento 2: Máximo 10 caracteres
-
Texto restante: 'esto es una prueba para dividir'
-
Se busca espacio posterior a índice 10> está en índice 14
-
Se retrocede al último espacio antes de eso> índice 12
-
Se corta en índice 12 + 1->'esto es una"
-
Texto restante: 'prueba para dividir"
Fragmento 3: Máximo 15 caracteres
-
Texto restante: 'prueba para dividir" (tiene menos de 15 caracteres, no necesita cortar)
-
Se toma el resto completo.
| Receptor[0][0] | "Hola " |
| Receptor[0][0] | "esto es una " |
| Receptor[0][0] | "prueba para dividir" |
