Manière la plus facile de convertir une URL d'un lien hypertexte dans un C# string?
Je suis de consommer de l'API Twitter et que vous voulez convertir toutes les Url des liens hypertextes.
Quel est le moyen le plus efficace que vous venez de faire cela?
de
string myString = "This is my tweet check it out http://tinyurl.com/blah";
à
This is my tweet check it out <a href="http://tinyurl.com/blah">http://tinyurl.com/>blah</a>
Pour cette application, vous devriez regarder pour une solution qui correspond exactement comment Twitter lui-même analyse les Url — une expression régulière peut fonctionner, assurez-vous d'utiliser la même condition pour la fin de l'URL (par rapport à des choses comme les points et la droite parenthèses) que Twitter n'.
OriginalL'auteur Nathan Birkes | 2008-08-28
Vous devez vous connecter pour publier un commentaire.
Les expressions régulières sont probablement votre ami pour ce genre de tâche:
L'expression régulière pour la mise en correspondance des URLs peuvent avoir besoin d'un peu de travail.
(https?://[^ ]+)
parce que le https n'est pas si rare.OriginalL'auteur samjudson
Je l'ai fait exactement la même chose avec jquery consommer de l'API JSON ici est la linkify fonction:
OriginalL'auteur RedWolves
C'est effectivement un problème de l'horrible. Url peut contenir (et fin) de la ponctuation, de sorte qu'il peut être difficile de déterminer où une URL se termine effectivement, quand il est incorporé dans le texte normal. Par exemple:
est une URL valide, mais il pourrait tout aussi bien être la fin d'une phrase:
Vous ne pouvez pas simplement analyser jusqu'à ce qu'un espace est trouvé, parce que vous allez garder de la période dans le cadre de l'URL. Vous aussi vous ne pouvez pas simplement analyser jusqu'à une période ou des un espace est trouvé, parce que les périodes sont extrêmement fréquentes dans les Url.
Oui, regex est votre ami ici, mais de la construction de l'appropriées regex est la partie la plus difficile.
Découvrez: L'expansion des Url avec des Regex .NET.
J'ai acheté la mienne à partir de tempuri.org.
OriginalL'auteur Derek Park
Vous pouvez ajouter un peu plus de contrôle sur ce en utilisant MatchEvaluator fonction de délégué à l'expression régulière:
supposons que j'ai cette chaîne:
maintenant, essayez ce code
OriginalL'auteur herry
/cheer pour RedWolves
Il y a le code pour avoir les adresses "anyprotocol"://"anysubdomain/domaine"."anydomainextension et de l'adresse",
et c'est un parfait exemple pour d'autres utilisations de la manipulation de la chaîne. vous pouvez explorer et de manipuler à volonté .remplacer et insérer "a href"s en cas de besoin.
J'ai utilisé jQuery pour modifier les attributs de ces liens à "target=_blank" facilement dans le contenu de mon chargement de la logique, même si l' .lien de la méthode ne permet pas de les personnaliser.
Personnellement, j'aime la clouant sur une méthode personnalisée à l'objet string à la volée de la chaîne de filtrage (la Chaîne.le prototype.linkify déclaration), mais je ne suis pas sûr de comment cela pourrait se jouer dans un environnement à grande échelle où vous auriez à organiser 10+ linkify fonctions similaires. Je pense que vous auriez certainement avoir quelque chose à faire d'autre avec votre code structure à ce point.
Peut-être un vétérinaire sera trébucher le long d'ici et de nous éclairer.
OriginalL'auteur winfred