Foros del Web » Programando para Internet » ASP Clásico »

separar valores del tipo ,-42-&5&(33()34),-16-!6897!

Estas en el tema de separar valores del tipo ,-42-&5&(33()34),-16-!6897! en el foro de ASP Clásico en Foros del Web. Hola muy buenas, necesito separar estos valores en datos diferenciados y separados, cada valor indica una cosa, los valores que estan entre - - son ...
  #1 (permalink)  
Antiguo 16/02/2005, 06:03
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 2
separar valores del tipo ,-42-&5&(33()34),-16-!6897!

Hola muy buenas, necesito separar estos valores en datos diferenciados y separados, cada valor indica una cosa, los valores que estan entre - - son los ids, los qeu estan entre * * es la primera ubicacion, los que estan entre / / es la segunda ubicacion, entre ! ! es el color, entre ( ( es el ancho, entre ) ) es el alto, $ $ es otro elemento, y entre & & es el numero de productos elegidos

La idea es recoger estos datos y meterlos en cookies, y diferenciarlos por el numero id, no se si la cookie seria de este tipo response.cookies("idproducto")("nombrecampo") o algo por el estilo.

Bien despues de esta introduccion, el valor que recojo del formulario es este

,-42-&5&(33()34),-16-!6897!,-10-&1&,-7-&2&*inferior*/izquierda/,-1-&1&,-3-&2&*intermedio*

E empezado haciendo esto:


valorproductos2 = ",-42-&5&(33()34),-16-!6897!,-10-&1&,-7-&2&*inferior*/izquierda/,-1-&1&,-3-&2&*intermedio*"
'con esto quito la coma del inicio
valorproductos = right(valorproductos2,len(valorproductos2)-1)
valorsincoma = Split(valorproductos,",")

response.write valorproductos&"<br><br>"


for I=LBound(valorsincoma) to UBound(valorsincoma)

response.write valorsincoma(I)&"<br>"

valorp2 = valorsincoma(I)

id = Split(valorp2,"-")

n = 0
for Iid=LBound(id) to UBound(id)
n = n + 1
if id(Iid) <> "" then
response.write "&nbsp;&nbsp;"&n&"&nbsp;&nbsp;&nbsp;&nbsp;<b>I D= </b>"&id(Iid)&"<br>"
end if

next

next


Pero me e atascado, alguien sabe como hacer esto??

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 16/02/2005, 17:20
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 2
Nadie sabe como separar estos valores? o me dice alguna forma mas facil de hacerlo?

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #3 (permalink)  
Antiguo 16/02/2005, 17:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 3 meses
Puntos: 535
No es imposible, pero está un poco complicado.
Lo que no veo por ningún lado en la cadena de ejemplo que pasaste es el caracter $ (que decís "es otro elemento")

Y... decís que eso lo recogés de un form. ¿no hay manear de que el formulario lo envíe de forma 'convencional'?
__________________
...___...
  #4 (permalink)  
Antiguo 16/02/2005, 20:37
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Lo que yo haria seria trabajar con una matriz, tu ya sabes cuantas columnas debe tener, que son el numero de elementos que *puedes* tener, y las filas serian tantos subelementos separados por comas tengas.

Ahora, definiria un id para cada uno de mis elementos:

id = 0
ubicacion = 1
segunda_ubicacion = 2
.
.
.

Despues justamente como haces, descompon el string original en un arreglo, y puedes valerte de expresiones regulares o de simples InStr para identificar tus elementos, por cada elemento, lo comparas con el caracter en el que viene encerrado y lo mandas a su columna con la fila en el indice de tu arreglo...

Al final dberias tener una tabla con cada uno de tus elementos separados, repito, es solo una idea, revisando rapido esto...


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 17/02/2005, 01:22
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 2
Hola Al Zuwaga
Hola u_goldman
gracias por vuestras respuestas, la verdad es que me e complicado la vida, si señor, no veas lo que hace un buen sueño reparador a las neuronas, jeje, me e despertado con la idea que plantea u_goldman, e puesto separaciones para diferenciar los elementos, cuando lo que tenia que haber echo es poner los valores que no existen como valor 0 y así con ver la posicion de cada elemento saber que son y meterlos en cookies para que despues pueda recuperarlos sin ningún problema.

En principio a mi entender con separar todo los caracteres por por ejemplo un - y hacer un:

valorsincoma = Split(valorproductos,",")
n= 0
for I=LBound(valorsincoma) to UBound(valorsincoma)
n = n + 1
se me pondrían todos los valores separados, estos tendrian una posicion que les asigno con el valor n, y de esta forma pondría un if

if n = 1 then
request.cookies("id") = ""valorsincoma(I)
elseif n = 2 then

creo que de esta forma podría funcionar, ahora lo probaré.

Gracias a los dos por contestar
__________________
asp, php, .net, adaptandose a las necesidades
  #6 (permalink)  
Antiguo 17/02/2005, 11:05
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Suerte y nos avisas cual fue tu solucion final!

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 24/02/2005, 02:49
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 2
Hola de nuevo, bien mi solucion final a sido esta:

valorproductos2 = ",-72--3--0--0--0--0--0--0-,-78--2--0--0--0--0--0--0-"
valorproductos = right(valorproductos2,len(valorproductos2)-1)
valorsincoma = Split(valorproductos,",")


for I=LBound(valorsincoma) to UBound(valorsincoma)

valorsinguinfinal = left(valorsincoma(I),len(valorsincoma(I))-1)
valorsinguinfinal = right(valorsinguinfinal,len(valorsinguinfinal)-1)

valorsinguinfinal2 = replace(valorsinguinfinal,"--","-")

valorsincoma2 = Split(valorsinguinfinal2,"-")

n = 0
for I2=LBound(valorsincoma2) to UBound(valorsincoma2)
n = n + 1

if n = "1" then

nuemroid = valorsincoma2(I2)

response.cookies("idm")(nuemroid) = valorsincoma2(I2)
Diccionario.add "idm"&nuemroid, valorsincoma2(I2)
elseif n = "2" then
response.cookies("elementosm")(nuemroid) = valorsincoma2(I2)
Diccionario.add "elementosm"&nuemroid, valorsincoma2(I2)
end if

next

next

De esta forma e ido sacando los productos.
A lo primero habia utilizado cookies para almacenar los datos pero al compilarlo en un .exe no me recogia los valores, despues de preguntar en este mismo foro y comentarme lo del objeto diccionario decidi cambiar las cookies por esto último y ahora funciona todo a la perfección.

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:24.