javascript - 使用 iOS 为多种语言解析推文的#hashtags 和@usernames

标签 javascript ios regex parsing hashtag

我想转换一条推文以在 UIWebView 中显示。我想将#hashtags 和@usernames 转换为 html 链接,然后我将处理这些链接。

我找到了一些使用正则表达式的解决方案,但大多数似乎都存在问题,因为电子邮件地址和 Web 链接中可能包含“@”字符。

有谁知道在 Objective-C 中执行此操作的适当方法吗?可以使用正则表达式来完成吗,正则表达式在 iOS 4 and later 中可用?或者我需要熟悉解析器吗?

哦,对了,忘了说,我希望它适用于所有语言。 (阿拉伯语、汉语、德语等...)

最佳答案

如果您在 WebView 中执行此操作,为什么不继续使用 javascript?我在一个必须自动找到链接的项目中做到了这一点。我不能依赖 webview 的数据检测器,所以一个简短的 javascript 有帮助:

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

正则表达式很简单,可能无法捕捉到所有网址,但大部分时间都能捕捉到。将其转移到用户名和主题标签应该不会太困难。

用户名 由字符、数字和 _ 组成,因此 @([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>"
)

关于javascript - 使用 iOS 为多种语言解析推文的#hashtags 和@usernames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126717/

相关文章:

ios - UIPickerView 在 UITableView 中使用 DateCell

java - 动态定义 CSV 文件的字段分隔符和文本限定符

javascript - 在特定点之后忽略用户输入

javascript - Firefox:按 Shift 或 CTRL 时未选中 JQuery-UI 复选框

javascript - 克隆作为唯一元素的元素

java - 具有不区分大小写前缀的正则表达式

python - 搜索正则表达式时忽略子节点

javascript - ChartJS ReactJS 对象的对象

ios - Phonegap Cordova 插件在构建时删除

ios - Apple Watch、几个目标和共享的 Watchkit 扩展/Watckit 应用程序目标