Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: NsTeam en Diciembre 17, 2011, 02:56:25 am
-
Buen día,
(No sé si me expliqué bien en el título). Lo que en sí me gustaría saber es ¿cómo podría obtener el texto dentro de los corchetes de un textbox1 y mostrarlo en un textbox2?
Me explico:
Tengo en un textbox1 el siguiente texto:
había una vez [un perro] que jugaba mucho con [su dueño]
un día [el perro] murió y el cuento acabó.
[fin]
¿Cómo podría hacer para pasar a textbox2 solo el texto dentro de los corchetes y mostrarlo como una lista?
Ejemplo:
un perro
su dueño
el perro
fin
Agradezco sus respuestas.
Gracias.
-
se me ocurre algo asi:
Private Sub Palabras_Entre_Parentesis(ByVal sText As String)
Dim oRegExp As Object
Dim oMatch As Object
Dim oMatches As Object
Set oRegExp = CreateObject("VBScript.RegExp")
With oRegExp
.Pattern = "\[(.*?)\]"
.Global = True
End With
Set oMatches = oRegExp.Execute(sText)
For Each oMatch In oMatches
Debug.Print oMatch.Value
Next
Set oRegExp = Nothing
Set oMatch = Nothing
Set oMatches = Nothing
End Sub
Private Sub Form_Load()
Call Palabras_Entre_Parentesis("había una vez [un perro] que jugaba mucho con [su dueño] un día [el perro] murió y el cuento acabó.[fin]")
End Sub
saludos.
-
Hola seba123neo, te agradezco por tu código.
Al intentar probarlo me doy cuenta de que no me funcionó :(, o creo que no entendí bien.
-
lo que hace es sacar del mismo texto que vos dijiste, todas las palabras que estan entre parentesis.
lo imprime en la ventana de inmediato del visual basic. (con el Debug.Print).
saludos.
-
Bien, perdón solo he copiado hasta la linea 17 ;D .
Por otro lado cambié el Debug.Print, por un textbox (porque no me funcionaba el Debug.Print), pero en el textbox solo me muestra el último text en [] (osea [fin])
Trate de probar con un Listbox pero aun así no logré hacerlo, ¿Cómo podría hacer para que muestre todas las palabras dentro de los []?
-
justamente acabo de crear un post, avisando que el codigo se visualiza solo hasta la linea 18 o 19 y despues uno no sabe que abajo sigue el codigo.
para hacer eso es facil simplemente cambiar una linea de codigo. poner un textbox (con nombre Text1) y propiedad Multiline = True.
Private Sub Palabras_Entre_Parentesis(ByVal sText As String)
Dim oRegExp As Object
Dim oMatch As Object
Dim oMatches As Object
Set oRegExp = CreateObject("VBScript.RegExp")
With oRegExp
.Pattern = "\[(.*?)\]"
.Global = True
End With
Set oMatches = oRegExp.Execute(sText)
For Each oMatch In oMatches
Text1.Text = Text1.Text & oMatch.Value & vbNewLine
Next
Set oRegExp = Nothing
Set oMatch = Nothing
Set oMatches = Nothing
End Sub
Private Sub Form_Load()
Call Palabras_Entre_Parentesis("había una vez [un perro] que jugaba mucho con [su dueño] un día [el perro] murió y el cuento acabó.[fin]")
End Sub
saludos.
-
Gracias, funciona de maravilla ;)
-
Saludos NsTeam y seba123neo !!! ;D
Yo había hecho algo más o menos así:
Option Explicit
Private Sub cmdOver_Click()
End
End Sub
Private Sub cmdOver_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdOver.FontBold = True
End Sub
Private Sub cmdSearch_Click()
txtResult.Text = ""
'//
Dim leftBracketPos As Integer
Dim rightBracketPos As Integer
Dim startPoint As Integer
Dim leftBracket As String
Dim rightBracket As String
Dim searchString As String
Dim bracketedText As String
'//
On Error GoTo ErrorsFound
'//
leftBracket = "["
rightBracket = "]"
startPoint = 1
searchString = txtSampleText.Text
'//
Do
leftBracketPos = InStr(startPoint, searchString, leftBracket)
If leftBracketPos = 0 Then Exit Do
rightBracketPos = InStr(leftBracketPos, searchString, rightBracket)
bracketedText = Mid(searchString, leftBracketPos + 1, rightBracketPos - (leftBracketPos + 1))
txtResult.Text = txtResult.Text & bracketedText & vbCrLf
startPoint = rightBracketPos
Loop Until leftBracketPos = 0
'//
Exit Sub
ErrorsFound:
If Err.Number = 5 Then
MsgBox "Es posible que falte un corchete...!!!", vbExclamation + vbOKOnly, "Falta..."
End If
Exit Sub
End Sub
Private Sub cmdSearch_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdSearch.FontBold = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdSearch.FontBold = False
cmdOver.FontBold = False
End Sub
(http://img6.imageshack.us/img6/4937/nro1.png)
(http://img843.imageshack.us/img843/7558/nro2.png)
(http://img855.imageshack.us/img855/9885/nro3.png)
(http://img846.imageshack.us/img846/2996/nro4.png)
Nombres:
- frmSTSearch (Form)
- txtSampleText (TextBox de la Izquierda)
- txtResult (Derecha)
- cmdSearch (Botón "Buscar Texto")
- cmdOver (Botón terminar)
Pero me parece que el de seba123Neo, se ahorra más código, me quedaría con el de él !!!
Saludos.
Manuel F. Borrego S. 8)
Barcelona, Venezuela.