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

Cadena de String ¡¡¡

Estas en el tema de Cadena de String ¡¡¡ en el foro de Visual Basic clásico en Foros del Web. Hola: Mi duda es la siguiente: Tengo una cadena con una frase que mete el usuario por teclado, asi q en un principio no se ...
  #1 (permalink)  
Antiguo 13/03/2008, 02:50
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Cadena de String ¡¡¡

Hola:
Mi duda es la siguiente: Tengo una cadena con una frase que mete el usuario por teclado, asi q en un principio no se su longitud.
Lo que quiero es que cuando en esa cadena aparezca una serie de letras, por ejemplo "edad: 17 años" que a partir de que aparezca edad me copie en otro sitio, un text box por ejemplo el numero 17 pero no la palabra "años"que av seguida.
NO se si me e explicado demasiado bien, la idea es q en una cadena a partir de una palabra en este caso "edad" copie el nuemro que le sigue pero solo eso, no los siguientes caracteres.

Gracias de antemano.
  #2 (permalink)  
Antiguo 13/03/2008, 05:51
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Cadena de String ¡¡¡

Hola,si es como me inmagino es facil,pero necesito mas datos,por ejemplo vos ahi pones un ejemplo de la cadena que puede llegar a escribir el usuario,dame otro ejemplo mas de como puede ser,para saber la variacion que puede tener la cadena,la longitud no importa ,sino lo que se escribe a ver como es o siempre es igual de formato?

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 13/03/2008, 05:58
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Cadena de String ¡¡¡

No lo entiendo muy bien,

el ususario mete una cadena con una frase (supongo que a través de un TextBox) y cuando escriba "edad:" el número de a continuación lo copie en (otro) TextBox.

¿Según va escribiendo, o al validar la frase, p.ej. con un CommandButton?
¿En el primer TextBox, tiene que desaparecer el número que se pasó al segundo, o continúa alli?
¿Y si el usuario no escribe nunca la palabra edad: o la escribe mal p.ej. adad:, o no pone los dos puntos?

Y otra cosa: ¿Te refieres a VB6 ó VBA?

Última edición por Avellaneda; 13/03/2008 a las 06:11
  #4 (permalink)  
Antiguo 14/03/2008, 15:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: Cadena de String ¡¡¡

Cita:
Iniciado por happydent2 Ver Mensaje
Hola:
Mi duda es la siguiente: Tengo una cadena con una frase que mete el usuario por teclado, asi q en un principio no se su longitud.
Lo que quiero es que cuando en esa cadena aparezca una serie de letras, por ejemplo "edad: 17 años" que a partir de que aparezca edad me copie en otro sitio, un text box por ejemplo el numero 17 pero no la palabra "años"que av seguida.
NO se si me e explicado demasiado bien, la idea es q en una cadena a partir de una palabra en este caso "edad" copie el nuemro que le sigue pero solo eso, no los siguientes caracteres.

Gracias de antemano.
Los demás usuarios tienen razón. No estamos entendiendo tu duda. Pero si lo que quieres es extraer el número que está dentro de un String, podrías buscar con Instr el número y extraerlo, ignorando el resto del texto...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/03/2008, 02:33
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Cadena de String ¡¡¡

Respondo a lo q me preguntais:

1- La frase la mete el ususario en un textBox y no tiene siempre el mismo formato.
2- Lo que tengo q extraer es el numero q viene despues de "edad", pero tb en la frase puede haber mas numeros, por eso no se si con la funcion Instr se puede hacer.
3- no tien q desaparecer el numero del 1º textbox.
4- Trabajo con un modulo de VBA
5- Si el usuario no escribe la palabra bien, o sin los 2 puntos pues que no ponga nada en la texbox.

Espero haber respondido a todo lo q me preguntais.

La idea principal es q no se como coger solo el numero q viene despues de "edad" sin coger mas string.
Ademas la edad no tiene pq tener siempre 2 digitos , puede tener 1 tb , o 3 y hasta 4, ya q esa edad no se refiere a años, pero bueno, eso es otro tema.

Gracias de antemano.
  #6 (permalink)  
Antiguo 17/03/2008, 05:08
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Cadena de String ¡¡¡

Mira si te vale este código. Lo puedes poner en un CommandButton o en el evento LostFocus del Text1:

Código:
Dim a() As String, i As Integer

a = Split(Text1)
For i = 0 To UBound(a)
    If a(i) = "edad:" Then
        Text2.Text = a(i + 1)
        Exit For
    End If
Next i
  #7 (permalink)  
Antiguo 18/03/2008, 10:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cadena de String ¡¡¡

Creo que el código de Avellaneda te servirá...
Si quieres, también puedes agregar una comprobación para ver si la palabra siguiente es un número... (IsNumeric).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 18/03/2008, 10:59
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Cadena de String ¡¡¡

Hola

Discrepo LIGERAMENTE de la solución al problema de happydent.... pq creo que no se adapta a sus necesidades.

Por lo que he entendido, happydent pretende que A MEDIDA que el usuario va entrando los datos en el textbox, se vaya rellenando otros con los parámetros definidos (edad,....). Luego, de caras al problema, no tiene mucho sentido (funcionalmente hablando, claro) el que se deba hacer el análisis del texto una vez concluído sino que se debe hacer, MIENTRAS se crea.

De todas formas, creo que eso implica un problema añadido y es : ¿qué pasa cuando el usuario escribe su edad y por alguna razón la debe modificar?

Para este caso el análisis de la cadena se debería realizar en el evento CHANGE o el el KEYDOWN/KEYUP/KEYPRESS pero tengo mis dudas en cuanto a la efectividad del proceso, hablando, claro está, del tiempo que demora el análisis de la cadena, respecto el tiempo entre cada salto de evento. Luego, quizás, la mejor solución es la que ya habéis propuesto
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #9 (permalink)  
Antiguo 18/03/2008, 14:15
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Cadena de String ¡¡¡

Cita:
Iniciado por happydent2 Ver Mensaje
Hola:
Mi duda es la siguiente: Tengo una cadena con una frase que mete el usuario por teclado, asi q en un principio no se su longitud.
Lo que quiero es que cuando en esa cadena aparezca una serie de letras, por ejemplo "edad: 17 años" que a partir de que aparezca edad me copie en otro sitio, un text box por ejemplo el numero 17 pero no la palabra "años"que av seguida.
Se supone que si la palabra siguiente a la edad no quiere que aparezca, es que ya ha terminado la frase y no lo puede controlar con el evento Change del TextBox, sino al finalizar de escribir en el mismo.

De todas formas, sería interesante que nos pusieras cómo controlar en el evento Change si se ha introducido la palabra "edad:" y lo que se escribe a continuación.

Además de lo que diga happydent2 (si es que dice algo) me gustaría escuchar tu razonamiento.
  #10 (permalink)  
Antiguo 19/03/2008, 09:40
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Cadena de String ¡¡¡

... hombre Avellaneda, mi respuesta no tenía ánimo de ofensa, pero de todas formas, algo así serviría....

Código:
Option Explicit
Private PonEdad As Byte, PonTel As Byte
Private Sub Form_Load()
PonEdad = 0
PonTel = 0
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim Posicion
If PonEdad = 0 Then
    Posicion = InStr(1, Text1.Text, "edad:", vbTextCompare)
    If Posicion <> 0 And Text2 = "" Then
        PonEdad = 1
    End If
ElseIf PonEdad = 1 Then
    If KeyCode = 32 And Text2.Text = "" Then Exit Sub
    If KeyCode = 32 And Text2.Text <> "" Then PonEdad = 2
    Text2.Text = Text2.Text & Chr(KeyCode)
End If
If PonTel = 0 Then
    Posicion = InStr(1, Text1.Text, "tel:", vbTextCompare)
    If Posicion <> 0 And Text3 = "" Then
        PonTel = 1
    End If
ElseIf PonTel = 1 Then
    If KeyCode = 32 And Text3.Text = "" Then Exit Sub
    If KeyCode = 32 And Text3.Text <> "" Then PonTel = 2
    Text3.Text = Text3.Text & Chr(KeyCode)
End If
End Sub
Donde Text1 es el texto donde se inserta el escrito, text2 es donde va a parar la edad y text3 es donde va a parar un posible número de teléfono.

Cabe tener en cuenta que como utilizo el chr(keycode) tiene algunas limitaciones (como a la hora de utilizar el numpad o lo signos (punto, coma,...) pero funcionar funciona.....
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
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 00:58.