close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#914 closed enhancement (fixed)

Caracteres de escape en Tokenizer — at Version 2

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: ASCII data files Version: 2.0.1
Severity: blocker Keywords:
Cc:

Description (last modified by Víctor de Buen Remiro)

Ahora mismo Tokenizer no es capaz de parsear registros con campos en los que hay caracteres de escape.

Por ejemplo, este código

Set aux = Tokenizer("1,\"Par (\"Producto\",\"Dirección\")\",3",",");
//Set aux = Tokenizer("1,\"Par (\"Producto\",\"Dirección\")\",3",",","\"","\\");
Set View(aux,"");

Produce un conjunto de 4 elementos

$tmp$="1"
$tmp$=""Par ("Producto""
$tmp$=""Dirección")""
$tmp$="3"

cuando está claro que se pretendía definir uno de tres elementos.

$tmp$="1"
$tmp$=""Par ("Producto","Dirección")""
$tmp$="3"

Change History (2)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [2208]) Fixes #914

comment:2 Changed 15 years ago by Víctor de Buen Remiro

Description: modified (diff)

Se han añadido argumentos opcionales a Tokenizer para mantener la compatibilidad hacia atrás:

Set Tokenizer(Text string, Text separator [, Text quote="", Text scape=""]) 

Divide un texto en cada una de las partes separadas por el caracter de separacion dado.
Si se especifica el argumento <quote>, entonces los campos que comiencen por ese caracter podrán incluir el caracter separador sin que les afecte el mismo.
Si además se especifica el argumento <quote>, entonces el par <scape><quote> será tratado como <quote>

De eta forma, la sentencia siguiente devuelve el resultado esperado

Set aux = Tokenizer("1,\"Par (\"Producto\",\"Dirección\")\",3",",","\"","\\");
Set View(aux,"");
Note: See TracTickets for help on using tickets.