Remplacement d'un caractère [Résolu]

dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 29 juil. 2009 à 15:57 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 30 juil. 2009 à 10:43
Bonjour,

J'ai un string qui correspond à un code html

Dans ce code, j'ai besoin de remplacer à un endroit (un lien http:// vers une image), les espaces par "_"

J'utilise la fonction suivante pour rechercher dans le string et je remplace par replace, mais cela ne fonctionne pas.

Quelqu'un a-t'il une idée ?

mon_string = Replace(MidStr(mon_string, "http://", ">"), " ", "_")


Private Function MidStr(ByVal Str As String, ByVal sStart As String, ByVal sEnd As String, Optional ByVal Start As Integer = 30) As String
Try
Dim iStart As Integer = Str.IndexOf(sStart, Start) + sStart.Length.ToString
Dim iEnd As Integer = Str.IndexOf(sEnd, iStart)
Return Str.Substring(iStart, iEnd - iStart)
Catch ex As Exception
Return String.Empty
End Try
End Function
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 29 juil. 2009 à 18:02
3
Merci
... ok

beh du coup c'est le premier snippet mais que tu utilises mal

(et en plus il est pas bon, je le modifie)

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Dim mon_string As String = "blabla TOUTE LA SOURCE HTML   lien   FIN"
        Dim sLink As String
        Dim iLastPosition As Integer = 0

        Do
            iLastPosition = mon_string.IndexOf("http://", iLastPosition + 1)
            sLink = MidStr(mon_string, "http://", ">", iLastPosition)
            If sLink.Contains(" ") Then
                mon_string = mon_string.Replace(sLink, sLink.Replace(" "c, "_"c))
            End If
        Loop While sLink.Contains(" ")

        MessageBox.Show(mon_string)
    End Sub

    Private Function MidStr(ByVal Expression As String, ByVal sLeft As String, ByVal sRight As String, Optional ByVal iStart As Integer = -1) As String
        Dim iPosL As Integer = Expression.IndexOf(sLeft, iStart)
        If iPosL > -1 Then
            Dim iPosR As Integer = Expression.IndexOf(sRight, iPosL + sLeft.Length)
            If iPosR = -1 Then
                'pas le caractère de fin, on prend la chaîne complète
                iPosR = Expression.Length - iPosL - sLeft.Length
                sRight = String.Empty
            End If
            Return Expression.Substring(iPosL, iPosR - iPosL)
        End If
        Return String.Empty
    End Function

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 29 juil. 2009 à 16:40
0
Merci
salut,
ton lien est dans les 30 premiers caractères?
il vient de où ce code, http://www.codyx.org/snippet_recuperer-chaine-inconnue-placee-entre-deux-chaines-connues_334.aspx#1046 ?

il te renvoie une chaine inconnue entre 2 connues, tu ne l'utilises pas correctement

cette chaine peut exister ailleurs aussi dans ta page et tu remplaces toutes les occurrences de la chaine, pas juste dans la partie manquante

je te poste une solution ici :
http://www.codyx.org/snippet_remplacer-chaine-inconnue-placee-entre-deux-chaines-connues_303.aspx#2449

ReplaceString(mon_string, "http://", ">", "_")

++
[hr]
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 29 juil. 2009 à 16:44
0
Merci
et tu me mets le doute maintenant

tu veux remplacer juste les espaces d'un lien/image en particulier?

tu récupères donc un seul lien hein...

mon_string = MidStr(mon_string, "http://", ">").Replace(" "c, "_"c)
Commenter la réponse de PCPT
dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 29 juil. 2009 à 17:11
0
Merci
Je vais être précis dans action.

Je charge des mails d'une boite IMAP que j'enregistre au format .html en unicode ( System.Text.Encoding.Unicode) car sinon j'ai plein de caractères bizarre !

Mais le problème est que tous les liens http:// sont modifiés. Le caractère "_" est remplacé par un espace. Je cherche donc à remplacer tous les espaces de chacun de lien du mail par un "_".

Ouf!!!!
Commenter la réponse de dsigmoun
dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 30 juil. 2009 à 09:02
0
Merci
J'ai un message d'erreur "L'index était hors limite. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : StartIndex"
Commenter la réponse de dsigmoun
dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 30 juil. 2009 à 09:09
0
Merci
J'ai trouvé la source de cette erreur car certain mail n'ont pas de lien http:// J'ai donc ajouter un if mon_string.contains("http://")

Par contre mes espaces subsistent dans les liens. Ils ne sont pas remplacés par "_".
Commenter la réponse de dsigmoun
dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 30 juil. 2009 à 09:56
0
Merci
bon bah cela fonctionne mais pas avec que 'http'. il a besoin de 'http://www..."
Commenter la réponse de dsigmoun
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 30 juil. 2009 à 10:43
0
Merci
Optional ByVal iStart As Integer = -1
Optional ByVal iStart As Integer = 0

Return Expression.Substring(iPosL, iPosR - iPosL)
Return Expression.Substring(iPosL + sLeft.Length, iPosR - iPosL - sLeft.Length)

++
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.