2011-02-26 69 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>" 
)