Split y commas en los valores

24/07/2003 - 13:02 por PaVBLo | Informe spam
Buenas.

Una pregunta, ayer me mencionaron en el grupo que podría leer mis documentos
CSV (o de textos delimitados por coma) usando la funcion SPLIT.
Lo que ocurre es que tengo varios de los valores de los registros con
valores que incluyen coma, algo asi:

"ID","Name", "Country", etc...
"T111", "Gonzalez, Oscar", "España", etc..

Se os ocurre alguna manera sencilla de verificar esto? (si me ayudais con
alguna función)

Gracias por adelantado.

PaVBlo

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P.
24/07/2003 - 14:37 | Informe spam
Hola Pablo,

Al utilizar el split de esto ["T111", "Gonzalez, Oscar", "España", 123456,
etc..] con el separador , (coma)
te quedaría un arreglo asi:

arreglo(0) = ""T111""
arreglo(1) = ""Gonzalez""
arreglo(2) = ""Oscar"
arreglo(3) = ""España""
arreglo(4) = "123456"

Por lo tanto solo deberías quitar las doble comillas, ¿como?, con la función
Replace. Ejemplo:

'Reemplazamos el caracter " por nada... es decir, lo borramos.
arreglo(0) = replace(arreglo(0), Chr(34), "")
'Chr(34) = " (doble comilla)


Saludos,
Jhonny Vargas P. [MS MVP-ASP]
Santiago de Chile




"PaVBLo" wrote in message
news:
Buenas.

Una pregunta, ayer me mencionaron en el grupo que podría leer mis


documentos
CSV (o de textos delimitados por coma) usando la funcion SPLIT.
Lo que ocurre es que tengo varios de los valores de los registros con
valores que incluyen coma, algo asi:

"ID","Name", "Country", etc...
"T111", "Gonzalez, Oscar", "España", etc..

Se os ocurre alguna manera sencilla de verificar esto? (si me ayudais con
alguna función)

Gracias por adelantado.

PaVBlo


Respuesta Responder a este mensaje
#2 PaVBLo
24/07/2003 - 15:15 | Informe spam
Jhonny,

Gracias por contestar. Creo que no me he explicado del todo bien. Lo que
sucede es que "Gonzalez, Oscar", no debe ir en dos lugares del arreglo
distintos, es decir:

arreglo(1) ="Gonzalez, Oscar"

No es realmente mi problema las comillas pues, como tú bien dices, basta con
reemplazarlas por "nada". Eso será luego de que pueda indentificar cada uno
de los campos en el lugar del arreglo correctamente.

Inclusive, y es algo que no aclaré cuando inicié mi pregunta, es que los
valores en blanco no llevan comillas. Lo explico:

MI CSV:
cabecera --> "ID","Name", "Country", "Age", "BirthDate", "State", etc...
registro 1 --> "T111", "Gonzalez, Oscar", "España", "12", "10/10/1956",
"España", etc...
registro 2 --> "T222", "Ramirez, Luis",,"15",, etc...

Entonces, cuando recorro cada fila y busco las "comas", me separa un valor
en 2 partes (Gonzalez y Oscar, Ramirez y Luis, etc.), y, además, si intento
buscar lo que está contenido entre dos comillas ("Gonzalez, Oscar"), a los
otros campos que se encuentran vacíos no los considera pues no hay comillas
en medio sino "comas" seguidas (,,,,).
No sé si me has (han) entendido.

Gracias por tu disposición.

PaVBlo



"Jhonny Vargas P." escribió en el mensaje
news:
Hola Pablo,

Al utilizar el split de esto ["T111", "Gonzalez, Oscar", "España", 123456,
etc..] con el separador , (coma)
te quedaría un arreglo asi:

arreglo(0) = ""T111""
arreglo(1) = ""Gonzalez""
arreglo(2) = ""Oscar"
arreglo(3) = ""España""
arreglo(4) = "123456"

Por lo tanto solo deberías quitar las doble comillas, ¿como?, con la


función
Replace. Ejemplo:

'Reemplazamos el caracter " por nada... es decir, lo borramos.
arreglo(0) = replace(arreglo(0), Chr(34), "")
'Chr(34) = " (doble comilla)


Saludos,
Jhonny Vargas P. [MS MVP-ASP]
Santiago de Chile




"PaVBLo" wrote in message
news:
> Buenas.
>
> Una pregunta, ayer me mencionaron en el grupo que podría leer mis
documentos
> CSV (o de textos delimitados por coma) usando la funcion SPLIT.
> Lo que ocurre es que tengo varios de los valores de los registros con
> valores que incluyen coma, algo asi:
>
> "ID","Name", "Country", etc...
> "T111", "Gonzalez, Oscar", "España", etc..
>
> Se os ocurre alguna manera sencilla de verificar esto? (si me ayudais


con
> alguna función)
>
> Gracias por adelantado.
>
> PaVBlo
>
>


Respuesta Responder a este mensaje
#3 Jhonny Vargas P.
24/07/2003 - 17:14 | Informe spam
mmm... se me ocurre lo siguiente

1ro. reemplaza en la línea los caracteres ", " por un "###"
ejemplo: Linea = Replace(Linea, "", "", "###")
2do. reemplaza en la línea las " por un nulo o nada
ejemplo: Linea = Replace(Linea, """, "")

3ro. finalmente utilizas el Split()
ejemplo: Arreglo = Split(Linea, "###")


La idea es cambiar el separador ", " por un ###, luego borrar las " y
finalmente aplicar el split...


Saludos,
Jhonny Vargas P. [MS MVP-ASP]
Santiago de Chile


"PaVBLo" wrote in message
news:
Jhonny,

Gracias por contestar. Creo que no me he explicado del todo bien. Lo que
sucede es que "Gonzalez, Oscar", no debe ir en dos lugares del arreglo
distintos, es decir:

arreglo(1) ="Gonzalez, Oscar"

No es realmente mi problema las comillas pues, como tú bien dices, basta


con
reemplazarlas por "nada". Eso será luego de que pueda indentificar cada


uno
de los campos en el lugar del arreglo correctamente.

Inclusive, y es algo que no aclaré cuando inicié mi pregunta, es que los
valores en blanco no llevan comillas. Lo explico:

MI CSV:
cabecera --> "ID","Name", "Country", "Age", "BirthDate", "State", etc...
registro 1 --> "T111", "Gonzalez, Oscar", "España", "12", "10/10/1956",
"España", etc...
registro 2 --> "T222", "Ramirez, Luis",,"15",, etc...

Entonces, cuando recorro cada fila y busco las "comas", me separa un valor
en 2 partes (Gonzalez y Oscar, Ramirez y Luis, etc.), y, además, si


intento
buscar lo que está contenido entre dos comillas ("Gonzalez, Oscar"), a los
otros campos que se encuentran vacíos no los considera pues no hay


comillas
en medio sino "comas" seguidas (,,,,).
No sé si me has (han) entendido.

Gracias por tu disposición.

PaVBlo



"Jhonny Vargas P." escribió en el


mensaje
news:
> Hola Pablo,
>
> Al utilizar el split de esto ["T111", "Gonzalez, Oscar", "España",


123456,
> etc..] con el separador , (coma)
> te quedaría un arreglo asi:
>
> arreglo(0) = ""T111""
> arreglo(1) = ""Gonzalez""
> arreglo(2) = ""Oscar"
> arreglo(3) = ""España""
> arreglo(4) = "123456"
>
> Por lo tanto solo deberías quitar las doble comillas, ¿como?, con la
función
> Replace. Ejemplo:
>
> 'Reemplazamos el caracter " por nada... es decir, lo borramos.
> arreglo(0) = replace(arreglo(0), Chr(34), "")
> 'Chr(34) = " (doble comilla)
>
>
> Saludos,
> Jhonny Vargas P. [MS MVP-ASP]
> Santiago de Chile
>
>
>
>
> "PaVBLo" wrote in message
> news:
> > Buenas.
> >
> > Una pregunta, ayer me mencionaron en el grupo que podría leer mis
> documentos
> > CSV (o de textos delimitados por coma) usando la funcion SPLIT.
> > Lo que ocurre es que tengo varios de los valores de los registros con
> > valores que incluyen coma, algo asi:
> >
> > "ID","Name", "Country", etc...
> > "T111", "Gonzalez, Oscar", "España", etc..
> >
> > Se os ocurre alguna manera sencilla de verificar esto? (si me ayudais
con
> > alguna función)
> >
> > Gracias por adelantado.
> >
> > PaVBlo
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Sashka
24/07/2003 - 17:21 | Informe spam
Bueno .. con javasxcript podrías solucionarlo asi:
arreglo(1) = arreglo(1) + "," + arreglo(2)
arreglo.splice(2,1)

Con lo que te queda:

arreglo(0) = ""T111""
arreglo(1) ="Gonzalez, Oscar"
arreglo(2) = ""España""
arreglo(3) = "123456"

Sashka

"PaVBLo" escribió en el mensaje
news:
Jhonny,

Gracias por contestar. Creo que no me he explicado del todo bien. Lo que
sucede es que "Gonzalez, Oscar", no debe ir en dos lugares del arreglo
distintos, es decir:

arreglo(1) ="Gonzalez, Oscar"

No es realmente mi problema las comillas pues, como tú bien dices, basta


con
reemplazarlas por "nada". Eso será luego de que pueda indentificar cada


uno
de los campos en el lugar del arreglo correctamente.

Inclusive, y es algo que no aclaré cuando inicié mi pregunta, es que los
valores en blanco no llevan comillas. Lo explico:

MI CSV:
cabecera --> "ID","Name", "Country", "Age", "BirthDate", "State", etc...
registro 1 --> "T111", "Gonzalez, Oscar", "España", "12", "10/10/1956",
"España", etc...
registro 2 --> "T222", "Ramirez, Luis",,"15",, etc...

Entonces, cuando recorro cada fila y busco las "comas", me separa un valor
en 2 partes (Gonzalez y Oscar, Ramirez y Luis, etc.), y, además, si


intento
buscar lo que está contenido entre dos comillas ("Gonzalez, Oscar"), a los
otros campos que se encuentran vacíos no los considera pues no hay


comillas
en medio sino "comas" seguidas (,,,,).
No sé si me has (han) entendido.

Gracias por tu disposición.

PaVBlo



"Jhonny Vargas P." escribió en el


mensaje
news:
> Hola Pablo,
>
> Al utilizar el split de esto ["T111", "Gonzalez, Oscar", "España",


123456,
> etc..] con el separador , (coma)
> te quedaría un arreglo asi:
>
> arreglo(0) = ""T111""
> arreglo(1) = ""Gonzalez""
> arreglo(2) = ""Oscar"
> arreglo(3) = ""España""
> arreglo(4) = "123456"
>
> Por lo tanto solo deberías quitar las doble comillas, ¿como?, con la
función
> Replace. Ejemplo:
>
> 'Reemplazamos el caracter " por nada... es decir, lo borramos.
> arreglo(0) = replace(arreglo(0), Chr(34), "")
> 'Chr(34) = " (doble comilla)
>
>
> Saludos,
> Jhonny Vargas P. [MS MVP-ASP]
> Santiago de Chile
>
>
>
>
> "PaVBLo" wrote in message
> news:
> > Buenas.
> >
> > Una pregunta, ayer me mencionaron en el grupo que podría leer mis
> documentos
> > CSV (o de textos delimitados por coma) usando la funcion SPLIT.
> > Lo que ocurre es que tengo varios de los valores de los registros con
> > valores que incluyen coma, algo asi:
> >
> > "ID","Name", "Country", etc...
> > "T111", "Gonzalez, Oscar", "España", etc..
> >
> > Se os ocurre alguna manera sencilla de verificar esto? (si me ayudais
con
> > alguna función)
> >
> > Gracias por adelantado.
> >
> > PaVBlo
> >
> >
>
>


Respuesta Responder a este mensaje
#5 PaVBLo
24/07/2003 - 18:32 | Informe spam
Esto es como me quedó... Lo saqué de por allí, es usando Regular
Expressions:

Function SplitAdv(strInput)
Dim objRE
Set objRE = new RegExp
objRE.IgnoreCase = true
objRE.Global = true
objRE.Pattern = ",(?=([^""]*""[^""]*"")*(?![^""]*""))"
SplitAdv = Split(objRE.Replace(strInput, "\b"), "\b")
End Function

Funcionó a la PERFECCIÓN!!! Devuelve un array con cada uno de los campos del
CSV (tengan o no comas, y comillas), por curiosidad pruebenlo o guardenlo
porque siempre hace falta.

Muchas gracias Jhonny y Shashka (aunque no te entendí demasiado... no es mi
fuerte el jsp).

Para quien le interese consultar la fuente de ese código es:
http://www.4guysfromrolla.com/webte...-1.3.shtml

Saludos,

PaVBlo


"Jhonny Vargas P." escribió en el mensaje
news:
mmm... se me ocurre lo siguiente

1ro. reemplaza en la línea los caracteres ", " por un "###"
ejemplo: Linea = Replace(Linea, "", "", "###")
2do. reemplaza en la línea las " por un nulo o nada
ejemplo: Linea = Replace(Linea, """, "")

3ro. finalmente utilizas el Split()
ejemplo: Arreglo = Split(Linea, "###")


La idea es cambiar el separador ", " por un ###, luego borrar las " y
finalmente aplicar el split...


Saludos,
Jhonny Vargas P. [MS MVP-ASP]
Santiago de Chile


"PaVBLo" wrote in message
news:
> Jhonny,
>
> Gracias por contestar. Creo que no me he explicado del todo bien. Lo que
> sucede es que "Gonzalez, Oscar", no debe ir en dos lugares del arreglo
> distintos, es decir:
>
> arreglo(1) ="Gonzalez, Oscar"
>
> No es realmente mi problema las comillas pues, como tú bien dices, basta
con
> reemplazarlas por "nada". Eso será luego de que pueda indentificar cada
uno
> de los campos en el lugar del arreglo correctamente.
>
> Inclusive, y es algo que no aclaré cuando inicié mi pregunta, es que los
> valores en blanco no llevan comillas. Lo explico:
>
> MI CSV:
> cabecera --> "ID","Name", "Country", "Age", "BirthDate", "State", etc...
> registro 1 --> "T111", "Gonzalez, Oscar", "España", "12", "10/10/1956",
> "España", etc...
> registro 2 --> "T222", "Ramirez, Luis",,"15",, etc...
>
> Entonces, cuando recorro cada fila y busco las "comas", me separa un


valor
> en 2 partes (Gonzalez y Oscar, Ramirez y Luis, etc.), y, además, si
intento
> buscar lo que está contenido entre dos comillas ("Gonzalez, Oscar"), a


los
> otros campos que se encuentran vacíos no los considera pues no hay
comillas
> en medio sino "comas" seguidas (,,,,).
> No sé si me has (han) entendido.
>
> Gracias por tu disposición.
>
> PaVBlo
>
>
>
> "Jhonny Vargas P." escribió en el
mensaje
> news:
> > Hola Pablo,
> >
> > Al utilizar el split de esto ["T111", "Gonzalez, Oscar", "España",
123456,
> > etc..] con el separador , (coma)
> > te quedaría un arreglo asi:
> >
> > arreglo(0) = ""T111""
> > arreglo(1) = ""Gonzalez""
> > arreglo(2) = ""Oscar"
> > arreglo(3) = ""España""
> > arreglo(4) = "123456"
> >
> > Por lo tanto solo deberías quitar las doble comillas, ¿como?, con la
> función
> > Replace. Ejemplo:
> >
> > 'Reemplazamos el caracter " por nada... es decir, lo borramos.
> > arreglo(0) = replace(arreglo(0), Chr(34), "")
> > 'Chr(34) = " (doble comilla)
> >
> >
> > Saludos,
> > Jhonny Vargas P. [MS MVP-ASP]
> > Santiago de Chile
> >
> >
> >
> >
> > "PaVBLo" wrote in message
> > news:
> > > Buenas.
> > >
> > > Una pregunta, ayer me mencionaron en el grupo que podría leer mis
> > documentos
> > > CSV (o de textos delimitados por coma) usando la funcion SPLIT.
> > > Lo que ocurre es que tengo varios de los valores de los registros


con
> > > valores que incluyen coma, algo asi:
> > >
> > > "ID","Name", "Country", etc...
> > > "T111", "Gonzalez, Oscar", "España", etc..
> > >
> > > Se os ocurre alguna manera sencilla de verificar esto? (si me


ayudais
> con
> > > alguna función)
> > >
> > > Gracias por adelantado.
> > >
> > > PaVBlo
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida