Forums Últimos mensajes - Powered by IBM
 

Devolver una palabra con RegEx

15/12/2004 - 22:32 por Aldo Dell | Informe spam
Hola amigos,

hace un tiempo escribí una función que me devolvía la palabra que se
encontraba en una posición aproximada dentro de una cadena, por ejemplo:

c = "esta es mi cadena"
p = Palabra (c,3)

la función, en este caso me devuelve "esta" porque la posición 3 o cuarto
caracter está ocupada por la letra "a" de la palabra "esta".

El mecanismo que implementé es algo largo y poco eficiente pues se basa en
bucles, InStr, etc.

En estos días he intentado hacer algo similar con expresiones regulares
intentanto hacerlo más eficiente pero no lo logro.

¿Alguno me sugiere algo?
(Ya he consultado la documentación MSDN, busqué en libros y sites, he
probado diferentes enfoques con las patterns de RegEx pero de verdad no
consigo solución...)

de antemano muy agradecido!
Lic. Aldo Dell.
 

Leer las respuestas

#1 david
16/12/2004 - 15:36 | Informe spam
Hola Aldo,

Supongo que esta función te servirá.

Private Function Palabra(ByVal strCad As String, ByVal intPos As Integer) As
String
Dim intPosBlancIni As Integer
Dim intPosBlancFin As Integer
Dim strAux As String

strAux = Microsoft.VisualBasic.Left(strCad, intPos)
intPosBlancIni = InStrRev(strAux, " ") + 1
strAux = Microsoft.VisualBasic.Right(strCad, Len(strCad) - intPos)
intPosBlancFin = InStr(strAux, " ")
If intPosBlancFin = 0 Then intPosBlancFin = Len(strCad)
Return Mid(strCad, intPosBlancIni, (intPos - intPosBlancIni) +
intPosBlancFin)
End Function

Un saludo.

"Aldo Dell" escribió en el mensaje
news:
Hola amigos,

hace un tiempo escribí una función que me devolvía la palabra que se
encontraba en una posición aproximada dentro de una cadena, por ejemplo:

c = "esta es mi cadena"
p = Palabra (c,3)

la función, en este caso me devuelve "esta" porque la posición 3 o cuarto
caracter está ocupada por la letra "a" de la palabra "esta".

El mecanismo que implementé es algo largo y poco eficiente pues se basa en
bucles, InStr, etc.

En estos días he intentado hacer algo similar con expresiones regulares
intentanto hacerlo más eficiente pero no lo logro.

¿Alguno me sugiere algo?
(Ya he consultado la documentación MSDN, busqué en libros y sites, he
probado diferentes enfoques con las patterns de RegEx pero de verdad no
consigo solución...)

de antemano muy agradecido!
Lic. Aldo Dell.



Preguntas similares