在Javascript / JQuery中,如何像Twitter一样替换以’@’符号开头的字符串中的任何单词?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Javascript / JQuery中,如何像Twitter一样替换以’@’符号开头的字符串中的任何单词?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2874字,纯文字阅读大概需要5分钟。
内容图文
![在Javascript / JQuery中,如何像Twitter一样替换以’@’符号开头的字符串中的任何单词?](/upload/InfoBanner/zyjiaocheng/671/ffbb6666cebf402d9250a54d0563bb09.jpg)
我正在尝试将任何’@sometext’设为HTML链接,其中还将’sometext’附加到URL.即“ @sometext”成为指向“ http://someurl.com/sometext”的链接.但是它可以更改,因为根据“ sometext”的不同,每次链接都会有所不同.我正在用javascript和jquery编写此代码.当有人插入@username链接回该人的个人资料页面时,我试图重新创建类似于Twitter的链接.
我已经有代码可以在文本中找到网址,并使其成为HTML链接.但是我现在并没有写任何带有@符号的东西.我找不到任何可以帮助我的东西.
这是我必须创建URL HTML链接的代码:
var message = this.text;
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi;
message = message.replace(exp,"<a href='$1' target='_new'>$1</a>");
resultDiv += message + "</div>";
好的,这就是我的代码现在的样子,并且可以正常工作,除了在某些@sometext链接的字符串@sometext:之后直接有一个“:”,因此该链接是断开的链接.将网址创建为HTML链接时,如何删除或忽略“:”?
$(data.results).each(function() {
var userLink = "<a href=\"http://twitter.com/" + this.from_user + "\">";
var replyTo = this.to_user;
var resultDiv = "<div class=\"finalResult\">";
resultDiv += "<fieldset class=\"tweetReturn\" style = \"width: 75%;\">";
resultDiv += "<div><div id=\"userImage\"><img src=\"" + this.profile_image_url + "\" height=\"48px\" width=\"48px\"/></div>";
resultDiv += "<div id=\"userMessage\"><strong>" + userLink + this.from_user + "</a></strong> ";
var message = this.text;
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi;
message = message.replace(exp,"<a href='$1'>$1</a>");
message = message.replace( /(^|\s)@(\S+)/g, '$1@<a href=\"http://twitter.com/$2\">$2</a>');
message = message.replace( /(^|\s)#(\S+)/g, '$1<a href=\"http://search.twitter.com/search?q=%23\$2\">#$2</a>');
resultDiv += message + "</div>";
resultDiv += "<div id=\"twitterLink\"><a href=\"http://www.twitter.com\"><img src=\"http://twitter-badges.s3.amazonaws.com/twitter-b.png\" alt=\"Visit Twitter\"/></a></div>"
resultDiv += "<div id=\"timestamp\">" + this.created_at + "</div>";
resultDiv += "</div></div></fieldset>";
resultDiv += '</div><br />';
$("#displayResults").append(resultDiv);
});
解决方法:
Twitter工程师Dustin Diaz的Checkout this entry,用于链接链接,@消息和哈希.
var ify = function() {
return {
"link": function(t) {
return t.replace(/(^|\s+)(https*\:\/\/\S+[^\.\s+])/g, function(m, m1, link) {
return m1 + '<a href=' + link + '>' + ((link.length > 25) ? link.substr(0, 24) + '...' : link) + '</a>';
});
},
"at": function(t) {
return t.replace(/(^|\s+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
return m1 + '@<a href="http://twitter.com/' + m2 + '">' + m2 + '</a>';
});
},
"hash": function(t) {
return t.replace(/(^|\s+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2) {
return m1 + '#<a href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';
});
},
"clean": function(tweet) {
return this.hash(this.at(this.link(tweet)));
}
};
}();
内容总结
以上是互联网集市为您收集整理的在Javascript / JQuery中,如何像Twitter一样替换以’@’符号开头的字符串中的任何单词?全部内容,希望文章能够帮你解决在Javascript / JQuery中,如何像Twitter一样替换以’@’符号开头的字符串中的任何单词?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。