2011-02-26 74 views
0

和#哈希標籤@使用者名稱我想在一個UIWebView來變換鳴叫顯示。我想將#hashtags和@usernames轉換成html鏈接,然後我將處理。解析鳴叫使用的是iOS多種語言

我發現使用正則表達式的一些解決方案,但多數似乎有問題,如電子郵件地址和網站鏈接可以在他們的「@」字符。

有誰知道適當的方式在Objective-C這樣做呢?它可以使用正則表達式,這是在iOS 4 and later可以做些什麼呢?或者我需要使用解析器時髦嗎?

噢,忘了提,我想這是所有語言。 (阿拉伯語,中國,德國等)

+0

我的答案有幫助嗎? – 2011-05-11 15:19:56

+1

Argh哈哈我需要一個Objective-c解決方案,發現這個JavaScript解決方案,但我沒有使用UIWebView /:將RegEx轉換爲ObjC應該不會太難但修改問題標籤,以便其他人不會發現錯誤的結果像我一樣! – 2014-10-20 15:19:03

回答

2

如果您在網頁視圖這樣做,你爲什麼不繼續和使用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>" 
)