Reemplazar texto a veces si otras veces no

13/10/2004 - 18:59 por Jaimito | Informe spam
Hola compañeros...

Con el asunto creo que pueden determinar mi requerimiento.

Tengo un texto así:

<a href="http://www.google.com">Google</a>
<a href="listado.aspx">Listado de Morosos</a>
<a href="http://www.colombia.com.co">...<a/>
<a href="inicio.asp">Ir al Inicio</a>

Todo lo anterior está metido en una SOLA CADENA, necesito concatenarle a los
links que NO COMIENCEN por HTTP una cadena cualquiera.

Para el caso de la cadena anterior, tras efectuar la operación que necesito
quedaría así:

<a href="http://www.google.com">Google</a>
<a href="_JAIMITO_/listado.aspx">Listado de Morosos</a>
<a href="http://www.colombia.com.co">...<a/>
<a href="_JAIMITO_/inicio.asp">Ir al Inicio</a>

Como pueden ver, los links que comienzan por HTTP no se alteran para nada;
en cambio lo que no comienzan les concateno la cadena "_JAIMITO_/" justo
donde termina el "href" del link.

¿Se puede hacer lo anterior con expresiones regulares?
Si es así, les agradecería un ejemplo sencillo.


Mil gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Telis Aynes
13/10/2004 - 20:07 | Informe spam
Chécate este código...
'INICIA
CÓDIGO-
Dim strHttp As String = "<a href=""http://www.google.com""&g...>" & _
"<a href=""listado.aspx"">Listado de
Morosos</a>" & _
"<a
href=""http://www.colombia.com.co"&qu...>" & _
"<a href=""inicio.asp"">Ir al
Inicio</a>"
Dim strsHttp As String() = strHttp.Split("""")
Dim strHttpSalida As String = ""
Dim i As Integer = 0
For Each s As String In strsHttp
If Not s.StartsWith("<") And Not s.StartsWith(">") Then
If Not s.StartsWith("http://") Then
s = "_JAIMITO_/" & s
End If
End If
If i = 0 Then
strHttpSalida &= s
Else
strHttpSalida &= """" & s
End If
i += 1
Next
label2.Text = strHttpSalida
'-TERMINA
CÓDIGO
Espero te sirva... ahora que solo sirve para el texto que envías, si quieres
más pues ya tienes el inicio creo que no tendrás más problemas

Saludos...

Octavio Telis Aynés
www.comunidadpuntonet.org/df/


"Jaimito" escribió en el mensaje
news:
Hola compañeros...

Con el asunto creo que pueden determinar mi requerimiento.

Tengo un texto así:

<a href="http://www.google.com">Google</a>
<a href="listado.aspx">Listado de Morosos</a>
<a href="http://www.colombia.com.co">...<a/>
<a href="inicio.asp">Ir al Inicio</a>

Todo lo anterior está metido en una SOLA CADENA, necesito concatenarle a


los
links que NO COMIENCEN por HTTP una cadena cualquiera.

Para el caso de la cadena anterior, tras efectuar la operación que


necesito
quedaría así:

<a href="http://www.google.com">Google</a>
<a href="_JAIMITO_/listado.aspx">Listado de Morosos</a>
<a href="http://www.colombia.com.co">...<a/>
<a href="_JAIMITO_/inicio.asp">Ir al Inicio</a>

Como pueden ver, los links que comienzan por HTTP no se alteran para nada;
en cambio lo que no comienzan les concateno la cadena "_JAIMITO_/" justo
donde termina el "href" del link.

¿Se puede hacer lo anterior con expresiones regulares?
Si es así, les agradecería un ejemplo sencillo.


Mil gracias.
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
13/10/2004 - 20:36 | Informe spam
Prueba esta:

Dim html As String = _
"<a href=""http://www.google.com""&g...>" & vbCrLf & _
"<a href=""listado.aspx"">Listado de Morosos</a>" & vbCrLf & _
"<a href=""http://www.colombia.com.co"&qu...>" & vbCrLf & _
"<a href=""inicio.asp"">Ir al Inicio</a>"

Dim re As New Regex("(href="")(?!http:\/\/)([^""]*)", _
RegexOptions.Multiline Or RegexOptions.IgnoreCase)

Dim extra As String = "_JAIMITO_/"

MessageBox.Show(re.Replace(html, "$1" & extra & "$2"))

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#3 Jaimito
13/10/2004 - 21:25 | Informe spam
Eduardo, millones de gracias.

Disculpa, ¿cuentas con otra referencia (diferente a la ayuda de .NET) para
el uso de expresiones regulares?

Si la tienes te agradezco me regales la URL o archivo a


Nuevamente gracias.
Respuesta Responder a este mensaje
#4 Eduardo A. Morcillo [MS MVP VB]
14/10/2004 - 06:20 | Informe spam
Disculpa, ¿cuentas con otra referencia (diferente a la ayuda de .NET)
para el uso de expresiones regulares?



Ninguna otra referencia. Es un poco de tratar de interpretarla (porque creo
que no es muy clara), un poco mas de prueba y error (como un 80%) y para
finalizar un poquito (muy poquito) de experiencia usandolas. =)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#5 José Ramón
14/10/2004 - 12:06 | Informe spam
Aquí hay información de expresiones regulares:

http://www.microsoft.com/spanish/ms...art101.asp
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida