Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] Coger parte de un string

Estas en el tema de Coger parte de un string en el foro de Visual Basic clásico en Foros del Web. Hola, Necesito vuestra ayuda. Tengo un str1 con lo siguiente 12_NA_GSC_201_GFIAT y necesito coger en una variable (valor) el valor que se encuentra entre la ...
  #1 (permalink)  
Antiguo 07/01/2014, 10:30
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 8 meses
Puntos: 7
Coger parte de un string

Hola,
Necesito vuestra ayuda. Tengo un str1 con lo siguiente 12_NA_GSC_201_GFIAT y necesito coger en una variable (valor) el valor que se encuentra entre la segunda "_" y la tercera "_" es decir que valor = GSC y si str1 = 28_UN_APS_851_GFIAT que la variable valor = APS.

Como puedo hacerlo?

Gracias
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 07/01/2014, 13:29
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años
Puntos: 53
Respuesta: Coger parte de un string

Hola:
Suponiendo que pudieses delimitar distintos separadores, podrías utilizar algo similar a esto:

Código vb:
Ver original
  1. Private Function DatoEntre(Origen As String, Desde As String, Hasta As String) As String
  2.   Dim Inicio As Integer, Fin As Integer
  3.   Inicio = InStr(Origen, Desde)
  4.   Fin = InStr(Origen, Hasta)
  5.   If Inicio = 0 Or Fin = 0 Then Exit Function
  6.   Inicio = Inicio + Len(Desde)
  7.   DatoEntre = Trim$(Mid(Origen, Inicio, Fin - Inicio - 1))
  8. End Function

Esta funcion te permite 'coger' el dato contenido entre dos palabras, por ejemplo, pero en tu caso dudo que te sirva, de todos modos al desconocer si todos los registros tienen la misma extructura es dificil darte una solución.

Si son todos iguales en forma, simplemente debes utilizar la funcion MID$ para conseguir los datos deseados.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 08/01/2014, 01:47
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Coger parte de un string

Siempre tienen la misma estructura pero pueden ser de distinta longitud. Lo único que se es que tengo que coger lo que esta entre el segundo "_" y el tercer "_".
__________________
Gracias por todo;

Un saludo
  #4 (permalink)  
Antiguo 08/01/2014, 03:35
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años
Puntos: 53
Respuesta: Coger parte de un string

Hola:

Si el primer _ siempre esta en la misma posicion, simplente debes utilizar la sentencia Mid$ para extraer el dato que necesitas.

En el ejemplo que pones, suponiendo que Registro = "12_NA_GSC_201_GFIAT"

Valor = MID$(Registro, 7, 3) entonces Valor = "GSC"

Si no es así, pon un ejemplo de unas cuantas de las lineas que puedes encontrar y lo comentamos.

Un saludo
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 08/01/2014, 04:37
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Coger parte de un string

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

Si el primer _ siempre esta en la misma posicion, simplente debes utilizar la sentencia Mid$ para extraer el dato que necesitas.

En el ejemplo que pones, suponiendo que Registro = "12_NA_GSC_201_GFIAT"

Valor = MID$(Registro, 7, 3) entonces Valor = "GSC"

Si no es así, pon un ejemplo de unas cuantas de las lineas que puedes encontrar y lo comentamos.

Un saludo
Así si me vale!!! Gracias. Si, siempre el segundo _ esta en la misma posición.
Muchisimas gracias!! eso es lo que necesito.

Un saludo
__________________
Gracias por todo;

Un saludo
  #6 (permalink)  
Antiguo 08/01/2014, 04:38
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 4 meses
Puntos: 29
Respuesta: Coger parte de un string

Solo tienes que currartelo un poco con instr y sacarlo con mid$

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.   Dim Cadena As String
  3.   Dim Resultado As String
  4.   Cadena = "12_NA_GSC_201_GFIAT"
  5.   Resultado = Extraer_De(Cadena)
  6.   If Resultado = "" Then
  7.     MsgBox "No se ha encontrado la referencia"
  8.   Else
  9.     MsgBox Resultado
  10.   End If
  11. End Sub
  12.  
  13. Private Function Extraer_De(ByVal Cadena As String) As String
  14.   Dim Pos1 As Long
  15.   Dim Pos2 As Long
  16.   On Local Error GoTo Error1
  17.   Pos1 = InStr(1, Cadena, "_")
  18.   If Pos1 <> 0 Then
  19.     Pos1 = InStr(Pos1 + 1, Cadena, "_")
  20.     If Pos1 <> 0 Then
  21.       Pos2 = InStr(Pos1 + 1, Cadena, "_")
  22.       If Pos2 <> 0 Then
  23.         Extraer_De = Mid$(Cadena, Pos1 + 1, Pos2 - Pos1 - 1)
  24.       End If
  25.     End If
  26.   End If
  27. Error1:
  28.   Err.Clear
  29. End Function

Esto te sirve con cualquier longitud de cadena.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: coger, parte, string
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 02:31.