首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串中的urls替换为锚标记

如何将字符串中的urls替换为锚标记
EN

Stack Overflow用户
提问于 2015-09-09 05:28:54
回答 1查看 75关注 0票数 0
代码语言:javascript
复制
//js

 var content ="welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";

//******************************************************************************//
//data coming from server

 var distinctURLs = ["http://www.yahoo.com?career" , "http://www.yahoo.com" , "http://www.yahoo.com" , "http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator" ];

//******************************************************************************//

//replacing with anchor tag
 for (var j = 0; j < distinctURLs.length; j++) {
     content = content.replace(new RegExp( distinctURLs[j], 'g' ), "<a href='" +    distinctURLs[j] + "'>" + distinctURLs[j] + "</a>");
 }

因此,在上面的情况下,我首先从var content中找到urls并用<a>标记替换,但是它不能正常工作。

代码语言:javascript
复制
//output  should be

welcome <a href="http://www.yahoo.com?career">http://www.yahoo.com?career</a> hi  <a href="http://www.yahoo.com">http://www.yahoo.com</a > <a href="http://www.yahoo.com">http://www.yahoo.com</a> <a href="http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator">http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator</a>

使用replacenew RegExp没有得到预期的结果

在这里你可以参考代码

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 05:34:24

您可以使用regex使用替换()来做这样简单的事情。

代码语言:javascript
复制
var content ="welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";

document.write(content.replace(/http:\/\/[^\s]+/g,'<a href="$&">$&</a>'))

Regex解释

更新:

或者用您的代码可以完成

代码语言:javascript
复制
var content = "welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";
var distinctURLs = ["http://www.yahoo.com?career", "http://www.yahoo.com", "http://www.yahoo.com", "http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator"];
document.write(content.split(/\s+/).map(function(v) {
  return distinctURLs.indexOf(v) == -1 ? v : '<a href="' + v + '">' + v + '</a>';
}).join(' '));
  1. 使用斯普利特(拆分内容
  2. 迭代使用的地图()
  3. 检查值在使用distinctURLs的数组indexOf()中,并返回所需的值。
  4. 使用加入()按空间连接数组值
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32471548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档