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

copiar parte de un string!!!

Estas en el tema de copiar parte de un string!!! en el foro de Visual Basic clásico en Foros del Web. buenas gente!!! como puedo copiar parte de un string en visual basic???? "hola.adeu" yo solo kiero cojer hola diciendole k coja del string hasta k ...
  #1 (permalink)  
Antiguo 18/07/2008, 03:07
Avatar de kamumaki  
Fecha de Ingreso: julio-2008
Ubicación: donde me dejan
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
copiar parte de un string!!!

buenas gente!!!

como puedo copiar parte de un string en visual basic????

"hola.adeu"

yo solo kiero cojer hola diciendole k coja del string hasta k encuentre un punto!!!


gracias!!!
  #2 (permalink)  
Antiguo 18/07/2008, 04:36
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: copiar parte de un string!!!

Hola!

Tienes que combinar las funciones InStr y Left para ese caso concreto. Te paso una función que escribí para mi librería y que hace eso mismo:

Código:
Public Function LeftToString(ByVal wExpression As String, ByVal wFind As String, Optional ByVal wStart As Long = 1) As String
Dim i           As Long
    
    i = InStr(wStart, wExpression, wFind, vbTextCompare)
    If i > 0 Then LeftToString = Left(wExpression, i - 1)
End Function
Te devuelve lo que haya en la cadena desde el principio hasta la subcadena que tú le digas, o nada, si la subcadena no existe. Por ejemplo:

Código:
    LeftToString("hola.adeu", ".") = "hola"
    LeftToString("hola.xiquet.adeu", ".") = "hola"
    LeftToString("hola.txavalin.deu", "va") = "hola.txa"
    LeftToString("hola.txavalin.deu", "miau") = ""
__________________
wile sona li mute e sona
  #3 (permalink)  
Antiguo 22/07/2008, 13:06
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
Si es al revez?

hola q tal Txoco sabes bueno me intereso la respuesta y es lo quiero utilizar en mi sistema final, lo q apsa es q yo quiero sacar es el texto de la derecha por ejm: pres01, solo quieor sacar el numero uno.
peor lo q yo ingresare es mediante una caja de texto y lo quiero es mandar el contenido de esa caja de texto a una bd, osea solo la parte q quiero q s emande mediante una cadena ojala me puedas ayudar
entendi la logica q presentas en el codigo pero aun desconosco las funciones q se utilizan no se si me podrias ayudar, solo quisiera me corrigas si es asi

Código:
Public Function RightToString(ByVal wExpression As String, ByVal wFind As String, Optional ByVal wStart As Long = 1) As String
Dim i As Long
    i = InStr(wStart, wExpression, wFind, vbTextCompare)
    If i > 0 Then RightToString = Right(wExpression, i + 1)
End Function
  #4 (permalink)  
Antiguo 22/07/2008, 13:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: copiar parte de un string!!!

En realidad debe ser así para que funcione:
Código PHP:
    If 0 Then RightToString Right(wExpressionLen(wExpression) - i
Ya que el parámetro de Right es cuántos caracteres quieres extraer y no desde qué caracter.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 22/07/2008, 16:27
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: copiar parte de un string!!!

Oops... David tiene razón, pero lo puedo explicar... tengo un módulo en el que he ido agregando todas las funciones de este tipo que he ido programando, entre ellas LeftToString y RightFromString... el ejemplo que puse, RightToString, lo puse mal, por confiarme al ser un código corto y teclearlo en lugar de copiarlo y pegarlo. Es sólo cuestión de etimología: quien sepa inglés sabe que "to" es "hasta" y "from", "desde". Así que me corrijo y (está vez sí) copio y pego las dos funciones y alguna más similar, por si a alguien le sirven. Código totalmente libre :

Código:
' Devuelve el final de una cadena a partir de la primera ocurrencia buscada.
Public Function RightFromString(ByVal wExpression As String, ByVal wFind As String, Optional ByVal wStart As Long = 1) As String
Dim i As Long

    i = InStr(wStart, wExpression, wFind, vbTextCompare)
    If i > 0 Then RightFromString = xRight(wExpression, i + 1)
End Function

' Devuelve el final de una cadena a partir de la última ocurrencia buscada.
Public Function RightFromLastString(ByVal wExpression As String, ByVal wFind As String, Optional ByVal wStart As Long = -1) As String
Dim i As Long

    i = InStrRev(wExpression, wFind, wStart, vbTextCompare)
    If i > 0 Then RightFromLastString = xRight(wExpression, i + 1)
End Function

' Devuelve la subcadena contenida entre el principio de la expresión
'   y la palabra especificada. Devuelve una cadena vacía si la palabra no
'   se encuentra.
Public Function LeftToString(ByVal wExpression As String, ByVal wFind As String, Optional ByVal wStart As Long = 1) As String
Dim i As Long
    
    i = InStr(wStart, wExpression, wFind, vbTextCompare)
    If i > 0 Then LeftToString = Left(wExpression, i - 1)
End Function
Algunas de las funciones necesitan también de estas:
Código:
' Devuelve el final de la cadena que hay en el primer parámetro, a partir de
'   la posición indicada en el segundo parámetro.
Public Function xRight(ByVal String1 As String, ByVal Position As Long) As String
    If InBetween(Position, 1, Len(String1)) Then
        xRight = Right(String1, Len(String1) - Position + 1)
    Else
        xRight = String1
    End If
End Function

' Devuelve si un valor está dentro de un rango. El último
'   parámetro opcional permite forzar que el valor se mantenga dentro
'   de los límites especificados, en cuyo caso siempre devuelve True.
Public Function InBetween(ByRef Value As Long, ByVal Minimum As Long, ByVal Maximum As Long, Optional ForceInRange As Boolean = False) As Boolean
    InBetween = Value >= Minimum And Value <= Maximum
    If (Not InBetween) And ForceInRange Then
        If Value < Minimum Then
            Value = Minimum
        ElseIf Value > Maximum Then
            Value = Maximum
        End If
        InBetween = True
    End If
End Function
(tengo la costumbre de definir los nombres en inglés, porque aprendí con libros en ese idioma, espero que esto no confunda a nadie...)

DjMiki, estas funciones se basan principalmente en el uso de Instr, InstrRev, Left y Right.

Instr te dice la posición en que una cadena se encuentra dentro de otra. Por ejemplo, Instr(1, "Cadena uno", " ", vbTextCompare) devuelve "7", que es la posición del primer espacio, empezando a buscar desde el primer caracter. vbTextCompare es una constante que hace que la comparación de las cadenas sea textual (no distinga mayúsculas de minúsculas). Por defecto es vbBinaryCompare, que sí hace esa distinción:

Código:
    Instr(1, "abcdefg", "DE", vbTextCompare) = 4
    Instr(1, "abcdefg", "DE", vbBinaryCompare) = 0
InstrRev funciona igual, pero busca desde el final de la cadena. Los parámetros cambian de orden, pero significan lo mismo.

Left y Right por su parte devuelven los n primeros caracteres de una cadena, o los n últimos, respectivamente:
Código:
    Left("abcdef", 2) = "ab"
    Right("abcdef", 2) = "ef"
Y por último, xRight es una función que también me hice para mí que devuelve el final de la cadena a partir del caracter que ocupa la posición pedida, inclusive:
Código:
    xRight("abcdef", 2) = "bcdef"
Yo utilizo estas funciones con cierta frecuencia, espero que sean de utilidad o sirvan de inspiración
__________________
wile sona li mute e sona
  #6 (permalink)  
Antiguo 22/07/2008, 21:46
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
De acuerdo Agradecimiento Txoco

Mucha sgracias txoco me sirvio de mucho los ejemplos y seguroq le serviran a muchos mas q quieran hacer algo asi en su programacion.
y quisiera saber si me podrias ayudar con este otro problema q tengo
http://www.forosdelweb.com/f69/dos-problemas-datagrid-sql-algo-asi-606950/
ojala puedas y si no agregame ps si es qpuedes
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:01.