有没有正确的方法来突出显示文本中的#hashtags和@ users?

时间:2013-09-27 20:33:10

标签: html ruby-on-rails ruby

我正在研究Rails并尝试编写类似Twitter的应用程序。

是否有一种简单的方法可以高亮显示从#开始的主题标签和以@开头的用户名,并从中创建网址?

我找不到合适的宝石。或者我应该自己制作?

例如:https://twitter.com/Xaput/status/383695262796873728

2 个答案:

答案 0 :(得分:1)

更多细节会有所帮助。

你可以用正则表达式捕获它们。

学习正则表达式。他们值得你花时间。

http://rubular.com/

http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UJ

您没有使用HTML标记此内容,但这听起来像是您要问的一大部分内容。

答案 1 :(得分:1)

使用String#scan

您可以使用Ruby的String#scan方法查找Tweet中的所有匹配表达式。例如:

str = 'Foo #bar! Baz @quux. #foobar1'

hashtags = str.scan /#[_\p{Alpha}][\p{Alnum}_]+/
#=> ["#bar", "#foobar1"]

users = str.scan /(?<=[\A\s\\.])@[_\p{Alnum}][^\p{Punct}\p{Blank}]{,14}/
#=> ["@quux"]

这将捕获大多数有效的用户名和主题标签,但可能存在预期结果不明确的边缘情况(非提及,如\@foo,或者奇怪 - 但是 - 有效的电子邮件,例如foo.@example.com)。在这种情况下,您需要调整正则表达式或对结果执行一些额外的验证。您的里程可能会有所不同。

参考