Hola, se que debo de ser un pesado ya con tanta cadena, pero bueno... :laugh:
Aqui os dejo esta funcion que acabo de hacer, que igual a alguien le es util...
' ////////////////////////////////////////////////////////////////
' // *Autor: *PsYkE1* (miguelin.majo@gmail.com) //
' // *Podeis agrandar o reducir el codigo, siempre y cuando se //
' // respete la autoria y se me comuniquen esos cambios. //
' // *Visita http://foro.rthacker.net //
' ////////////////////////////////////////////////////////////////
Option Explicit
Public Function Text_Beetwen_Chars(ByVal sStringToAnalyze, ByVal sCharStart, ByVal sCharEnd, _
Optional ByVal bRemoveString As Boolean = True)
Dim sActualChar As String * 1
Dim sPreviousChar As String * 1
Dim bFlag As Boolean
Dim lToTalLen As Long
Dim lToTalChar As Long
Dim x As Long
Dim y As Long
lToTalChar = Len(sStringToAnalyze)
If (lToTalChar > 0) And (sCharStart <> sCharEnd) Then
For x = 1 To lToTalChar
If x > 1 Then sPreviousChar = Mid$(sStringToAnalyze, x - 1, 1)
sActualChar = Mid$(sStringToAnalyze, x, 1)
lToTalLen = Len(Text_Beetwen_Chars)
Select Case sActualChar
Case sCharStart
If bFlag = False Then bFlag = True Else y = y + 1
If sPreviousChar = Chr$(32) And y = 0 And lToTalLen > 0 Then
Text_Beetwen_Chars = Left$(Text_Beetwen_Chars, (lToTalLen - 1))
End If
If bRemoveString = True Then sActualChar = Chr$(32)
Case sCharEnd
If y = 0 Then bFlag = False Else y = y - 1
If bRemoveString = True Then sActualChar = Chr$(32)
End Select
If bFlag = bRemoveString And (sActualChar <> sCharStart And sActualChar <> sCharEnd) Then
Text_Beetwen_Chars = Text_Beetwen_Chars & sActualChar
End If
Next x
End If
End Function
Un ejemplos:
Tengo un texto y quiero omitir todo lo que este entre parentesis...
Private Sub Form_Load()
Debug.Print Text_Beetwen_Chars("Hola amigos (esto solo es una prueba(jejejeje) ), de este modo veis que funciona...", "(", ")", False)
End Sub
Me devuelve:
CitarHola amigos, de este modo veis que funciona...
Y ahora el caso contrario, supongamos que necesito SOLO el texto que se encuentra entre parentesis:
Private Sub Form_Load()
Debug.Print Text_Beetwen_Chars("Hola amigos (esto solo es una prueba(jejejeje) ), de este modo veis que funciona...", "(", ")") ' Por defecto bRemoveString es True =)
End Sub
Este es el resultado:
Citaresto solo es una prueba jejejeje
Si me animo un dia de estos la mejorare... :P
Espero que a alguien le sirva!! ;D
Salu2! ;)
Vaya...! Excelente...! Estoy adjuntando todas esas funciones a mi librería...! Asi me evito el estar creandolas yo...! :silbar: :silbar:
Me alegro de que te sirva amigo! ;)
Cita de: ssccaann43 en 1 Julio 2010, 17:33 PM
Asi me evito el estar creandolas yo...! :silbar: :silbar:
jojojojo :laugh:
No sabia que eras tan vago... :silbar: (es broma :xD)
Salu2 y Gracias! :P
Jajajajaja es cierto...! Prefiero las cosas ya creadas, asi no pierdo tiempo... :silbar:
Cita de: ssccaann43 en 2 Julio 2010, 17:48 PM
Jajajajaja es cierto...! Prefiero las cosas ya creadas, asi no pierdo tiempo... :silbar:
Y con calidad, sino...tiempo perdido x2 :xD
MI Expresion regular para resumir todo esto seria asi:
((\s)?\(.*?\))
PD: Raul tenias razon, es un vicio!! :laugh:
DoEvents¡! :P
no seria mas facil con replace y split? :rolleyes:
Cita de: *PsYkE1* en 25 Julio 2010, 21:11 PM
MI Expresion regular para resumir todo esto seria asi:
((\s)?\(.*?\))
PD: Raul tenias razon, es un vicio!! :laugh:
DoEvents¡! :P
Jo! ..... creo q se puede seguir optimizando :P
Cita de: Tenient101 en 25 Julio 2010, 23:58 PM
no seria mas facil con replace y split? :rolleyes:
Hay varias formas, solo que algunas son mas rapidas y otras no :)
Cita de: Tenient101 en 25 Julio 2010, 23:58 PM
no seria mas facil con replace y split? :rolleyes:
Tienes razon ya lo pense asi, pero crei que seria mas rapido de esta manera, no esta comprobado aun, seria cuestion de testear... :P
@RaulSi, la mejorare :)
DoEvents¡! :P