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

uso de split

Estas en el tema de uso de split en el foro de ASP Clásico en Foros del Web. holaa, tengo una gran variable como puedo desarmarla? la recibo asi 100(a-b);101(c-d);102(e-f);103(g-h); necesito desarmarlo y que quede asi nombre=100 valor1=a valor2=b y asi con todos ...
  #1 (permalink)  
Antiguo 27/05/2004, 17:48
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 23 años, 5 meses
Puntos: 1
uso de split

holaa, tengo una gran variable como puedo desarmarla?
la recibo asi

100(a-b);101(c-d);102(e-f);103(g-h);

necesito desarmarlo y que quede asi

nombre=100 valor1=a valor2=b
y asi con todos

saludos y gracias
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 27/05/2004, 18:11
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
Y por que no almacenas en variables todos los componentes de esa formula compleja
nombre1=variablenombre1
valor1=variablevalor1

Te seria mas facil a la hora de reuatilizarla y si necesitas pasar los valores de una pagina otra puedes hacerlo con:
nombre1=request("variablenombre1")
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #3 (permalink)  
Antiguo 27/05/2004, 21:41
Avatar de amendoza  
Fecha de Ingreso: enero-2004
Ubicación: Guarena Venezuela
Mensajes: 139
Antigüedad: 21 años, 3 meses
Puntos: 0
Amigo el Split:

sRecord:

1,EL CAIMÁN DEL ALGARROBO,ALIRIO ZAMORA,LQ Discos,04-Ene-2004,11-Ene-2004,1


oSplit = split(sRecord,",")

DBRs.fields("posicion") = oSplit(0)
DBRs.fields("tema") = oSplit(1)
DBRs.fields("artista") = oSplit(2)
DBRs.fields("sello") = oSplit(3)


es muy sencillo
__________________
:: El sentir del Llano en la WEB ::

www.llanerisimo.com
  #4 (permalink)  
Antiguo 07/06/2004, 18:04
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 23 años, 5 meses
Puntos: 1
porfa podrian ayudarme con esto?
necesito desarmar la variable

?cadena_envio=;46(Fri Jun 11 00:00:00 GMT-0300 2004-Mon Jun 14 00:00:00 GMT-0300 2004);47(Tue Jun 15 00:00:00 GMT-0300 2004-Wed Jun 23 00:00:00 GMT-0300 2004)


que me devuelva algo asi

46
Fri Jun 11 00:00:00 GMT-0300 2004
Mon Jun 14 00:00:00 GMT-0300 2004

47
Tue Jun 15 00:00:00 GMT-0300 2004
Wed Jun 23 00:00:00 GMT-0300 2004

please denme un mano mil gracias!!!
__________________
On error no hago nada porque deje de fumar...
  #5 (permalink)  
Antiguo 07/06/2004, 20:06
Avatar de amendoza  
Fecha de Ingreso: enero-2004
Ubicación: Guarena Venezuela
Mensajes: 139
Antigüedad: 21 años, 3 meses
Puntos: 0
Amigo,
lo que requiere necesita crear una funcion y recorrer el string
__________________
:: El sentir del Llano en la WEB ::

www.llanerisimo.com
  #6 (permalink)  
Antiguo 08/06/2004, 10:44
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 23 años, 5 meses
Puntos: 1
ufffffffff y como deberia ser? alguiem que me ayude please jejeje no tnego ni idea
gracias!
__________________
On error no hago nada porque deje de fumar...
  #7 (permalink)  
Antiguo 08/06/2004, 12:11
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
A ver si este código te sirve, está un poco desordenado y precisa que tu cadena sea igual a la que mostraste, ya que no dejaste muy bien el planteamiento del problema ni las variantes que pudiera tener esta cadena, se basa en los siguientes puntos:
1.- La cadena original separa sus elementos por ";"
2.- Cada subcadena se separa de la siguiente forma:
  • Un valor antes de "("
    Dentro de los paréntesis encontramos dos valores, separados por "-" pero que ese mismo string se repite 3 veces, así que siempre buscamos la coincidencia de "-" cuando se repita la segunda vez
Código PHP:
<%
'Funcion que devuelve el string de acuerdo al caracter buscado
'
en el sentido buscado y con cierto número de coincidencias
Function EncuentraPos(cadenacaracterCualCaractersentido)
    
itera 0
    
For 1 to len(cadena)    
        If 
mid(cadenax1) = caracter Then
            itera 
itera 1
        End 
If
        If 
itera CualCaracter Then
            
Exit For
        
End If
    
Next
    
If sentido "izquierda" Then
        EstaCadena 
mid(cadena11)
    ElseIf 
sentido "derecha" Then
        EstaCadena 
mid(cadena1)
    
End If
    
EncuentraPos EstaCadena
End 
Function

'Función que obtiene la posición de un caracter buscado 
'
en sentido adelante o atrás
Function ObtenPos(cadenacaractertipo)
    If 
tipo "adelante" Then
        ObtenPos 
instr(1cadenacaracter)
    Elseif 
tipo "atras" Then
        Obtenpos 
instrRev(caractercadenalen(cadena))
    
End If
End Function

'Descompone la cadena y la imprime
Sub ImprimeItems(ParseaMe)
    item_uno = ObtenPos(ParseaMe, "(", "adelante")
    str_item_uno = left(ParseaMe, item_uno - 1)
    Response.Write str_item_uno & "<br>"
    str_item_dos = mid(ParseaMe, item_uno + 1, (len(parseaMe) - item_uno) - 1)
    str_item_tres = str_item_dos
    str_item_dos = EncuentraPos(str_item_dos, "-", 2, "izquierda")
    Response.Write str_item_dos & "<br>"
    str_item_tres = EncuentraPos(str_item_tres, "-", 2, "derecha")
    Response.Write str_item_tres & "<br>"
End Sub

'
Esta es la cadena que envías
cadena_envio
=";46(Fri Jun 11 00:00:00 GMT-0300 2004-Mon Jun 14 00:00:00 GMT-0300 2004);47(Tue Jun 15 00:00:00 GMT-0300 2004-Wed Jun 23 00:00:00 GMT-0300 2004)"

'El identificador en este caso es el ";" a partir de esto
'
hacemos un arreglo
arrOriginal 
split(cadena_envio";")

'iteramos e invocamos a la sub, siempre y cuando el índice
'
contenga un valor distinto de empty
For 
0 to uBound(arrOriginal)
    If 
not arrOriginal(i) = "" Then
        ImprimeItems trim
(arrOriginal(i))
    
End If
Next
%> 
A lo mejor no es la mejor solución, pero funciona si tu cadena cumple con lo que pusiste, a lo mejor investigando sobre expresiones regulares lo puedes resolver mejor!

Salu2,

P.D. Ya dije la palabra "mejor"???
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 08/06/2004 a las 12:16
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 05:48.