2010-07-27 6 views
1

Pour une raison quelconque, je ne peux pas trouver cela à travers des recherches, je ne sais pas vraiment quels mots-clés utiliser. Dans mon application Web, les utilisateurs saisissent du texte dans des zones de texte brut. Je veux convertir automatiquement n'importe quel http://somekind.oflink.com en une étiquette d'ancre html pour eux.En utilisant C#, comment rechercher et entrer un lien hypertexte dans un bloc de texte?

Quelle est la meilleure façon de capturer le lien? Je veux seulement soutenir les liens qui commencent par "http: //".

Merci!

Répondre

5

Remplacer "(http://([^ ]+))" avec "<a href=\"$1\">$2</a>"

string input = "Why don't you use http://www.google.com for that?"; 
    string pattern = "(http://([^ ]+))"; 
    string replacement = "<a href=\"$1\">$2</a>"; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 
    Console.WriteLine("Original String: {0}", input); 
    Console.WriteLine("Replacement String: {0}", result) 
+0

Merci pour cela, fonctionne très bien. – Chaddeus

+0

Vous devrez peut-être également couvrir les liens https: string pattern = "(https?: // ([^] +))"; Vous pouvez également avoir l'URL complète dans la sortie et l'ouvrir dans une nouvelle fenêtre avec ceci: htmlMessage = rgx.Replace (htmlMessage, "$1"); –

0

Utilisez une expression régulière. Vous pouvez trouver perdu des expressions ici: http://regexlib.com/Search.aspx?k=url

Et puis faire quelque chose comme ceci:

Regex regex = new Regex("YOUR PATTERN"); 
regex.Replace(
    textBlock, 
    delegate (Match m) { 
     return string.Format(@"<a href=""{0}"">{0}</a>", m.Groups[0]); 
    }); 

Notez que vous devez remplacer « votre modèle » avec l'expression régulière qui correspond à vos besoins.

Questions connexes