Separar cadena de caracteres

Necesito separar una cadena de caracteres. Por ejemplo tengo "Rodriguez Ramírez Jose Antonio"
Lo que necesito es guardar la primera cadena en una variable (Rodriguez), la segunda cadena (Ramírez) en otra variable y por ultimo todo lo que venga después (Jose Antonio) en otra variable, es decir 3 variables en total.
La idea es que por ejemplo si el nombre es "Rodriguez Ramírez Jose" también sean solo 3 variables.
Respuesta
1
Bien la función mid() te devuelve una cadena que existe en otra; si tenemos una variable por que es la cadena:
x= "Rodriguez Ramirez Jose"
nota que existen 2 espacios y esto es lo que nos va a ayudar:
strNull = instr(1,x," ",1)
NOS MANDARA LA POSICION DEL PRIMER ESPACIO entonces:
x2=left(x,(strNull -1))
el valor de x2= "Rodriguez"
Pero faltan 2 cadenas entonces tendrás que hacer un ciclo para todas incluyendo la primera
Vuelve preguntar y la próxima vez te doy el código
El problema esta en que los nombres y apellidos son ingresados por el usuario, entonces no siempre son iguales...
Bien hay dos formas de hacerlo una con un array:
dim arry(1 to 3) as string
arry(1)= "Rodriguez"
arry(2)= "Ramirez"
arry(3)= "Jose Antonio"
'y la otra con tipos y se gun lo necesites pueden ser privadas o publicas:
private type NombreTipo
nombre1 as string
nombre2 as string
nombre3 as string
end type
'y para usarlo declara una variable
dim Nombre as NombreTipo
'y te aparecera de esta forma
Nombre.nombre1= "Rodriguez"
Nombre.nombre2= "Ramirez"
Nombre.nombre3= "Jose Antonio"
'no se para que la utilices y alomejor no sea lo que nesesitas

2 respuestas más de otros expertos

Respuesta
1
Necesito que seas más especifico con lo de que no funciona bien, de todos modos te he dado el código de memoria, no lo he comprobado. Puedes probar cambiando algunos términos, ve probando lo que no funcione bien.
Creo que no funciona bien... :(
El código seria más o menos.
Variable ="nombre completo todo"
i=1 'Lo usamos para recorrer la cadena
Aux=left(variable, i) 'Aqui se guarda los caracteres uno a uno. Este en concreto el primero.
apellido1=""
while aux<>""
apellido1=aux
aux=mid(variable, i, i+1)
i=i+1
wend
variable=mid(variable, i, len(variable)) 'Guardamos en esta variable lo que nos queda sin el primer apellido
i=1
aux=left(variable,i)
apellido2=""
while aux<>""
apellido2=aux
aux=mid(variable, i, i+1)
i=i+1
wend
nombre=mid(variable, i,len(variable))
Espero que te sirva. Te advierto que esto es aproximado, pruébalo.
Respuesta
1
Halo disculpa la demora pero estuve ausente un tiempo... problemas de salud... bueno espero aun estés interesado por una opción más para tratar cadenas, recordando las funciones instr y mid podríamos resolver el problema
Primero debemos asegurarnos que hay tres o más cadenas de esta forma:
Dim Cadena1 as string
Dim Cadena2 as string
Dim Cadena3 as string
Dim J, I as byte ' Ojo los byte van desde 0 a 255, para que esta rutina funcione con cadenas mas largas hay q definir J e I como integer.
continuamos....
I=1
Cadena1 =""
Cadena2 =""
Cadena3 =""
Do
J=Instr(I,Nombre, " ")
If J>0 then
If Cadena1="" then Cadena1 = Mid(Nombre, I, J-I)
else If Cadena2="" then Cadena2 = Mid(Nombre, I, J-I)
else If Cadena3="" then Cadena3 = Mid(Nombre, I, J-I)
end if
I=j
Loop Until J =0
Ahora esta rutina es netamente estructurada, te la escribo así como para que examines el flujo del programa y te des cuenta de como funciona, pero si le pones un poquito podrías hacer una función que haga los mismo con N cadenas... suerte espero haberte ayudado y una vez más te pido disculpas por la demora...
NelMax

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas