0

UIWebViewに表示するためにツイートを変換したい。#hashtagsと@u​​sernamesをhtmlリンクに変換して処理したいと思います。

正規表現を使用した解決策をいくつか見つけましたが、電子メールアドレスとWebリンクに「@」文字が含まれている可能性があるため、ほとんどの場合問題があるようです。

Objective-Cでこれを行う適切な方法を知っている人はいますか?iOS 4以降で利用可能な正規表現を使用して実行できますか?または、パーサーでファンキーになる必要がありますか?

そうそう、言及するのを忘れた、私はこれがすべての言語で機能することを望んでいる。(アラビア語、中国語、ドイツ語など...)

4

1 に答える 1

2

Webビューでこれを行っている場合は、JavaScriptを使用してみませんか?私はこれをプロジェクトで行いました。このプロジェクトでは、リンクを自動的に見つける必要がありました。私はウェブビューのデータ検出器に頼ることができなかったので、短いJavaScriptが役に立ちました:

someTweet.replace(
   /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,
   "<a href='$1'>$1</a>"
)

正規表現は単純で、すべてのURLをキャッチできるとは限りませんが、ほとんどの場合はキャッチしました。これをユーザー名とハッシュタグに転送するのはそれほど難しいことではありません。

ユーザー名は文字、数字、および_で構成されているため、@([1-9a-zA-Z _] +)はそれらと一致します。

someTweet.replace(
   /@([1-9a-zA-Z_]+)/,
   "<a href='http://twitter.com/$1'>@$1</a>")
)

ハッシュタグ、私はこれらについてよくわかりません:私はそれらが#で始まり、空白、#または@で終わるものであると思いますが、それは単なる推測です。#([^ \ s#@] *)は機能する可能性があります。

someTweet.replace(
   /#([^\s#@]*)/,
   "<a href='http://twitter.com/search?q=%23$1'>#$1</a>"
)
于 2011-02-26T19:26:48.167 に答える