2012-03-13 34 views
1

私は自分のアプリで簡単なTwitterリーダーを実装しました。私は のつぶやきを得ることができます。しかし、このツイートにURLがある場合は、URLとして検出されないので、クリックすることはできません。 この機能を実装する可能性はありますか?ツイートのURLが と表示され、ウェブブラウザなどを起動しますか?Twitterのクリック可能なURL

は非常に

答えて

5

私はあなたがつぶやきを表示するのTextBlockを使用していると仮定してHyperlinkBut​​tonを作成すると、テキスト内のURLを検索テキスト、正しい?その場合は、RichTextBoxに変更してください。テキストの場合はRun、リンクの場合はHyperlinkを使用するだけです。

また、リッチテキストボックスのIsReadOnlyプロパティを正しく設定するには、を正しく設定してください。

次に、ツイートテキストを正規表現で解析し、ハイパーリンククラスを使用してクリック可能なリンクを作成し、残りのテキストを実行します。ここで

は、つぶやきを解析し、リッチテキストボックスのコンテンツを構築するサンプル関数です:あなたはそうのようにこの関数を呼び出す必要があり

private Block ParseTweet(string tweetText) 
{ 
    var paragraph = new Paragraph(); 
    var lastIndex = 0; 

    foreach (Match m in Regex.Matches(tweetText, @"(http(s)?://)?([\w-]+\.)+[\w-]+(/\S\w[\w- ;,./?%&=]\S*)?")) 
    { 
     if (m.Index > 0) 
      paragraph.Inlines.Add(tweetText.Substring(lastIndex, m.Index)); 

     var hyperlink = new Hyperlink() 
     { 
      NavigateUri = new System.Uri(m.Value, System.UriKind.RelativeOrAbsolute), 
      TargetName = "_blank" 
     }; 

     hyperlink.Inlines.Add(m.Value); 

     paragraph.Inlines.Add(hyperlink); 

     lastIndex = m.Index + m.Length; 
    } 

    if (lastIndex < tweetText.Length) 
     paragraph.Inlines.Add(tweetText.Substring(lastIndex)); 

    return paragraph; 
} 

var tweetText = @"Testing: http://twitter.com -> link for twitter"; 

MyRichTextBox.Blocks.Add(ParseTweet(tweetText)); 
+0

ので、いくつかのリンクに問題があります私はこの修正版Regex.Matchesを使用しました。(tweetText、@ "((http:s)?://)|(www。)([\ w-] + \)+ [\ w-] + S \ w [\ w-;、。/?%&=] \ S *)? ") – user3057486

0

をありがとう、私はそれは不可能だと思うけどしかし、あなたは(正規表現で)URLを検索し、テキストの下のハイパーリンクを表示するには、あなたのテキストを解析することができます。

1)あなたは正規表現

2)URLが発見された場合、あなたはこのURL

関連する問題