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!!!

| ||||
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:
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: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
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 |
| ||||
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 |
| ||||
![]() En realidad debe ser así para que funcione: Código PHP:
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
Respuesta: copiar parte de un string!!! Oops... David tiene razón, pero lo puedo explicar... ![]() ![]()
Código:
Algunas de las funciones necesitan también de estas:' 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
Código:
(tengo la costumbre de definir los nombres en inglés, porque aprendí con libros en ese idioma, espero que esto no confunda a nadie...)' 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 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:
InstrRev funciona igual, pero busca desde el final de la cadena. Los parámetros cambian de orden, pero significan lo mismo.Instr(1, "abcdefg", "DE", vbTextCompare) = 4 Instr(1, "abcdefg", "DE", vbBinaryCompare) = 0 Left y Right por su parte devuelven los n primeros caracteres de una cadena, o los n últimos, respectivamente:
Código:
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:Left("abcdef", 2) = "ab" Right("abcdef", 2) = "ef"
Código:
Yo utilizo estas funciones con cierta frecuencia, espero que sean de utilidad o sirvan de inspiración xRight("abcdef", 2) = "bcdef" ![]()
__________________ wile sona li mute e sona |
| ||||
![]() 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 |