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

separar cadena en texto y numeros

Estas en el tema de separar cadena en texto y numeros en el foro de ASP Clásico en Foros del Web. Hola como puedo separar una cadena en dos partes la parte textual y la parte numerica? ejemplo: AAJRI123457 para guardarlo asi: texto = "AAJRI" numero ...
  #1 (permalink)  
Antiguo 14/09/2008, 11:43
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
separar cadena en texto y numeros

Hola
como puedo separar una cadena en dos partes
la parte textual y la parte numerica?
ejemplo:

AAJRI123457

para guardarlo asi:
texto = "AAJRI"
numero = 123457
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 14/09/2008, 16:16
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
Respuesta: separar cadena en texto y numeros

me auto respondo



Código:
 
function separarCadena(cadena, queRetornar)
 dim  largo,i, caracter,  strNumero, strLetra
 largo = len(cadena)
 for i = 1 to largo
  caracter = right(left(cadena,i),1)
  if isnumeric(caracter) then
   strNumero = strNumero&caracter
  else
   strLetra = strLetra&caracter
  end if
 next
 if queRetornar = 1 then
  separarCadena =  strLetra
 else
  separarCadena = strNumero
 end if
end function
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #3 (permalink)  
Antiguo 15/09/2008, 08:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: separar cadena en texto y numeros

mmmmmmmmmmmmmm

Primero, esa función te regresa los números o lo que no es número de un parámetro string que le mandes, no te separa la cadena de texto conforme el ejemplo como lo solicitas en tu primer post (parece un RFC o algo así). Si tu cadena es "ABC1212CB334" te regresa con un 1 en el segundo parámetro un "ABCCB", si eso es lo que ocupas pues esta bien.

Segundo, si tienes que separar tanto los caracteres como los números para darles uso a cada uno, así como está, debes llamarla dos veces, lo que no es muy optimizado que digamos. Yo usuaria parámetros por referencia:

Código asp:
Ver original
  1. function Separar(ByVal Cadena, ByRef sNumeros, ByRef sCadena)
  2. For i=1 To Len(Cadena)
  3.   c = MID(Cadena,i,1)
  4.   if IsNumeric(c) Then
  5.        sNumeros = sNumeros & c
  6.     else
  7.        sCadena = sCadena & c
  8.     End If  
  9. Next
  10. End function
  11.  
  12. cadena = "ABC123DEF123G"
  13.  
  14. call Separar(cadena, sNumeros, sCadena)
  15. Response.write sCadena & "<br>"
  16. Response.write sNumeros & "<br>"

Ya si usas Option Explicit pues debes definir primero los parámetros como variables.

Saludos

Última edición por Myakire; 15/09/2008 a las 14:57
  #4 (permalink)  
Antiguo 15/09/2008, 10:13
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
Respuesta: separar cadena en texto y numeros

hola gracias por la colaboracion..
la verdad si lo que necesito es separar en un lado las letras o caracteres y en el otro lado los numeros..

y la funcion solo la usare una vez, solo cuando necesite mostrar los numeros la llamo
la parte de letras casi no la usare pero lo puse ahi por si algun dia la necesito llamar.

asi tal cual como esta me sirvio para mis fines.. de todos modos te agradezco muchisimo el interes y la ayuda..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
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 21:25.