Autor
|
Tema: Tomar texto de un punto a otro en vb.net (Leído 5,796 veces)
|
<housedir>
Desconectado
Mensajes: 199
|
Hola a todos, pues quisiera saber como puedo tomar un texto desde un punto a otro, por ejemplo:
"la casa de al lado es de color verde"
y quisiera tomar solo el texto que esta entre "la" y "verde"
y me quede asi:
"casa de al lado es de color"
ya intente con split y lbound ubound pero no me ha funcionado
|
|
|
En línea
|
Titulo: Padre nuestro Padre Nuestro que estás en www.cielo.comSantificado sea tu server, venga a nosotros tu shareware Hágase tu downloading así en el http como en el ftp Danos hoy nuestro surfing de cada día, Perdona nuestros bugs como nosotros también perdonamos a Microsoft. No nos dejes caer en una Mac y líbranos de todo worm. Enter...
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
lo más sencillo será hacer dos pasadas, en la primera seleccionamos la primera parte y en la segunda la última. Public Function firstandlast_word_of(ByVal inp As String) As String() Dim resultado(2) As String
if inp.contains(" ") then resultado(0) = inp.Substring(0, inp.IndexOf(" ")) resultado(1) = inp.Substring(inp.LastIndexOf(" ")) end if Return resultado End Function substring(start, lng) devuelve el fragmento que comienza en start y tiene como longitud lng, así que como vamos a recoger desde el principio podemos usar indexof(" ") para saber dónde se encuentra la posición del primer espacio y usarlo como longitud (si el espacio está en la posición de base 0 número 5 devuelve desde 0 hasta 5). El otro substring sólo tiene un parámetro, que es start, devolverá desde start hasta el final. ahora usamos lastindexof(" ") para encontrar el último espacio y devolver desde ahí hasta el final. edit: oh, my god, ahora lo veo y lo entendí al revés, de todas formas creo que con substring, indexof y lastindexof no es complicado return inp.substring(inp.indexof(" "),inp.lastindexof(" ") - inp.indexof(" "))
|
|
« Última modificación: 12 Enero 2013, 06:00 am por ABDERRAMAH »
|
En línea
|
|
|
|
<housedir>
Desconectado
Mensajes: 199
|
jaj la verdad tu explicacion me dejo peor que al principio, igual muchas gracias por tu ayuda
|
|
|
En línea
|
Titulo: Padre nuestro Padre Nuestro que estás en www.cielo.comSantificado sea tu server, venga a nosotros tu shareware Hágase tu downloading así en el http como en el ftp Danos hoy nuestro surfing de cada día, Perdona nuestros bugs como nosotros también perdonamos a Microsoft. No nos dejes caer en una Mac y líbranos de todo worm. Enter...
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Es fácil, substring devuelve un fragmento desde el primer parámetro y de la longitud del segundo, es decir: si tengo
dim str as string=hola mundo
str.substring(1,6)=ola mu o sea, un texto de 6 caracteres que comienza en el 1 (empieza en cero). Por eso lo que tu necesitas es un fragmento que va desde el primer espacio y es, aquí viene lo complicado, tan largo como la posición del último espacio menos la del primero... piensalo: str = hola que tal estas la posición del primer espacio es 4, la del último es 12, 12-4=8, así que empieza en 4 y tiene 8 letras de largo, por eso hago: resultado= str.substring(str.indexof(" ") , str.lastindexof(" ")-str.indexof(" "))
|
|
|
En línea
|
|
|
|
<housedir>
Desconectado
Mensajes: 199
|
si amigo, lo que no me entendiste es que necesito como identificador la palabra no el espacio donde esta, para dejarlo mas claro, supongamos que tengo el siguiente texto:
"bienvenidos todos a mi nueva casa de color verde"
y solo quiero extraer el texto que esta entre "todos" y "color" me quedaría
" a mi nueva casa de "
nose si me explique bien, saludos
|
|
|
En línea
|
Titulo: Padre nuestro Padre Nuestro que estás en www.cielo.comSantificado sea tu server, venga a nosotros tu shareware Hágase tu downloading así en el http como en el ftp Danos hoy nuestro surfing de cada día, Perdona nuestros bugs como nosotros también perdonamos a Microsoft. No nos dejes caer en una Mac y líbranos de todo worm. Enter...
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Si, lo que te he explicado antes hace exáctamente eso pero usando espacios como separador,pero bueno pones str.indexof("loquesea") y te lo corta por ahí.
|
|
« Última modificación: 12 Enero 2013, 06:31 am por ABDERRAMAH »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Creo que esto es lo que quiero según tus indicaciones: Dim STR As String = "bienvenidos todos a mi nueva casa de color verde" Dim Delimitador_A As String = "todos" Dim Delimitador_B As String = "verde" STR = Split(STR, Delimitador_A, , CompareMethod.Text)(1) ' Aquí tomo todo lo que hay a la derecha del primer delimitador STR = Split(STR, Delimitador_B, , CompareMethod.Text)(0) ' Aquí tomo todo lo que hay a la izquierda del segundo delimitador MsgBox(STR) ' a mi nueva casa de color
Saludos! EDITO:Te lo voy a poner más fácil: #Region " Delimit_String Function " ' // By Elektro H@ker ' ' USAGE: ' ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "todos")) ' a mi nueva casa de color verde ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "todos", "verde")) ' a mi nueva casa de color ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "ToDoS", "VeRDe", True)) ' a mi nueva casa de color ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "ToDoS", "VeRDe", False)) ' False ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "verde", "todos", , "Left")) ' a mi nueva casa de color Private Function Delimit_String(ByVal STR As String, ByVal Delimiter_A As String, Optional ByVal Delimiter_B As String = Nothing, Optional ByVal Ignore_Case As Boolean = False, Optional ByVal Left_Or_Right As String = "Right") Dim Compare_Method As Integer = 0 ' Don't ignore case If Ignore_Case = True Then Compare_Method = 1 ' Ignore Case If Not Left_Or_Right.ToUpper = "LEFT" And Not Left_Or_Right.ToUpper = "RIGHT" Then Return False ' Returns false if the Left_Or_Right argument is in incorrect format Try If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(1) _ Else If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(0) If Delimiter_B IsNot Nothing Then If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(0) _ Else If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(1) End If Return STR ' Returns the splitted string Catch Return False ' Returns false if the delimiter "A" or "B" can't be found (Index is out or fange) End Try End Function #End Region
|
|
« Última modificación: 12 Enero 2013, 16:15 pm por EleKtro H@cker »
|
En línea
|
|
|
|
<housedir>
Desconectado
Mensajes: 199
|
Creo que esto es lo que quiero según tus indicaciones: Dim STR As String = "bienvenidos todos a mi nueva casa de color verde" Dim Delimitador_A As String = "todos" Dim Delimitador_B As String = "verde" STR = Split(STR, Delimitador_A, , CompareMethod.Text)(1) ' Aquí tomo todo lo que hay a la derecha del primer delimitador STR = Split(STR, Delimitador_B, , CompareMethod.Text)(0) ' Aquí tomo todo lo que hay a la izquierda del segundo delimitador MsgBox(STR) ' a mi nueva casa de color
Saludos! EDITO:Te lo voy a poner más fácil: #Region " Delimit_String Function " ' // By Elektro H@ker ' ' USAGE: ' ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "todos")) ' a mi nueva casa de color verde ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "todos", "verde")) ' a mi nueva casa de color ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "ToDoS", "VeRDe", True)) ' a mi nueva casa de color ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "ToDoS", "VeRDe", False)) ' False ' MsgBox(Delimit_String("Bienvenidos todos a mi nueva casa de color verde", "verde", "todos", , "Left")) ' a mi nueva casa de color Private Function Delimit_String(ByVal STR As String, ByVal Delimiter_A As String, Optional ByVal Delimiter_B As String = Nothing, Optional ByVal Ignore_Case As Boolean = False, Optional ByVal Left_Or_Right As String = "Right") Dim Compare_Method As Integer = 0 ' Don't ignore case If Ignore_Case = True Then Compare_Method = 1 ' Ignore Case If Not Left_Or_Right.ToUpper = "LEFT" And Not Left_Or_Right.ToUpper = "RIGHT" Then Return False ' Returns false if the Left_Or_Right argument is in incorrect format Try If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(1) _ Else If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(0) If Delimiter_B IsNot Nothing Then If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(0) _ Else If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(1) End If Return STR ' Returns the splitted string Catch Return False ' Returns false if the delimiter "A" or "B" can't be found (Index is out or fange) End Try End Function #End Region
uff me quedo con la primera opción, muchas gracias me funciono saludos
|
|
|
En línea
|
Titulo: Padre nuestro Padre Nuestro que estás en www.cielo.comSantificado sea tu server, venga a nosotros tu shareware Hágase tu downloading así en el http como en el ftp Danos hoy nuestro surfing de cada día, Perdona nuestros bugs como nosotros también perdonamos a Microsoft. No nos dejes caer en una Mac y líbranos de todo worm. Enter...
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
pero si la segunda opción es más fácil Dim Tu_String = "Bienvenidos todos a mi nueva casa de color verde" Dim La_String_Delimitada = Delimit_String(Tu_String , "todos", "verde")) MSGBOX(La_String_Delimitada)
Séa como séa me alegro de que te haya servido, Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Flash 8 - Tomar el centro de un objeto como punto de referencia de X e Y
Diseño Gráfico
|
Scratz
|
4
|
3,539
|
14 Marzo 2007, 00:43 am
por H4RR13R
|
|
|
Batch que lea un texto y que cree otro con nombre parte del texto
Scripting
|
kakodt
|
1
|
3,962
|
27 Enero 2012, 21:10 pm
por Eleкtro
|
|
|
Duda para rotar un punto en función de otro
Programación C/C++
|
SrCooper
|
2
|
5,147
|
5 Abril 2014, 19:19 pm
por SrCooper
|
|
|
Rotar punto alrededor de otro punto
Programación General
|
patilanz
|
0
|
1,967
|
13 Diciembre 2015, 13:11 pm
por patilanz
|
|
|
No tomar el texto como código. -
Sugerencias y dudas sobre el Foro
|
NOB2014
|
4
|
3,591
|
22 Febrero 2016, 02:07 am
por NOB2014
|
|