在Javascript中的字符串中的URL的开头和结尾插入一个字符

时间:2016-08-13 17:27:53

标签: javascript

我的代码将从某个地方的API中提取一个字符串并将其返回到Discord频道。为了保持输出清洁,我需要使用"<"和">"符号。

我最初使用split()函数完成此操作,查找以" http"开头的空格和字符串。但是,当一个字符串保存它时,这种情况就会失败,例如:

var string = "I am a string (http://google.com)";

那么我有没有办法扫描整个字符串来查找和修改这些网址?

为清楚起见,我正在寻找:

var string = "http://google.com" 
//to become 
var string = "<http://google.com>"

这也必须与&#34; https&#34;。

一起使用

非常感谢您对此事的任何帮助!

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式在字符串中查找网址,然后将其替换为<>。深入解决方案可以通过@Crescent Fresh找到here

&#13;
&#13;
var string = "I am a string (http://google.com)";

function url(text) {
    var urlRegex =/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(urlRegex, function(url) {
      return '<' + url + '>';
    });
}

console.log(url(string));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只是@Ivan回答的补充

您可以使用regx和replace()函数

var string = "I am a string (http://google.com)";
var output = string.replace(/(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*))/,"<$1>");
console.log(output);

希望这会有所帮助

答案 2 :(得分:0)

查找http://的索引,然后结束将是第一次遇到非url-allowed字符(空格,非字母数字,/,。,#等异常)。 / p>

这将是最常用的启动方式,但可以在监控您使用它的链接时进行优化。