我有点像Rails的新手,所以请耐心等待,除了这一部分之外,我已经找到了大部分应用程序。
答案 0 :(得分:5)
def linkup_mentions_and_hashtags(text)
text.gsub!(/@([\w]+)(\W)?/, '<a href="http://twitter.com/\1">@\1</a>\2')
text.gsub!(/#([\w]+)(\W)?/, '<a href="http://twitter.com/search?q=%23\1">#\1</a>\2')
text
end
我在这里找到了这个例子:http://github.com/jnunemaker/twitter-app
辅助方法的链接:http://github.com/jnunemaker/twitter-app/blob/master/app/helpers/statuses_helper.rb
答案 1 :(得分:0)
也许您可以使用正则表达式查找“@ ...”然后用相应的链接替换匹配项?
答案 2 :(得分:0)
您可以使用正则表达式搜索@sometext {whitespace_or_endofstring}
答案 3 :(得分:0)
你可以使用正则表达式,我不知道ruby,但代码应该与我的例子完全一样:
Regex.Replace("this is an example @AlbertEin",
"(?<type>[@#])(?<nick>\\w{1,}[^ ])",
"<a href=\"http://twitter.com/${nick}\">${type}${nick}</a>");
此示例将返回
this is an example <a href="http://twitter.com/AlbertEin>@AlbertEin</a>
如果在.NET上运行
正则表达式(?<type>[@#])(?<nick>\\w{1,}[^ ])
表示捕获并命名为TYPE,以@或#开头的文本,然后捕获并命名为NAME后面包含至少一个文本字符的文本,直到找到空格为止
答案 4 :(得分:0)
也许您可以使用正则表达式来解析以@
开头的单词,然后使用正确的链接更新该位置的字符串。
这个正则表达式会为您提供以@
符号开头的单词,但您可能需要调整它:
\@[\S]+\
答案 5 :(得分:0)
您可以使用正则表达式搜索@username,然后将其转换为相应的链接。
我在PHP中使用以下代码:
$ret = preg_replace("#(^|[\n ])@([^ \"\t\n\r<]*)#ise",
"'\\1<a href=\"http://www.twitter.com/\\2\" >@\\2</a>'",
$ret);
答案 6 :(得分:0)
我也一直在努力,我不确定它是100%完美,但它似乎有用:
def auto_link_twitter(txt, options = {:target => "_blank"})
txt.scan(/(^|\W|\s+)(#|@)(\w{1,25})/).each do |match|
if match[1] == "#"
txt.gsub!(/##{match.last}/, link_to("##{match.last}", "http://twitter.com/search/?q=##{match.last}", options))
elsif match[1] == "@"
txt.gsub!(/@#{match.last}/, link_to("@#{match.last}", "http://twitter.com/#{match.last}", options))
end
end
txt
end
我将它与一些谷歌搜索拼凑在一起,并在api文档中阅读String.scan。