2016-08-13 148 views
0

我的代码将从某个API的某个字符串中拉出一个字符串,并将其返回到Discord通道中。为了保持输出清洁,我需要用“<”和“>”符号来包围任何网址。在Javascript中的字符串的开始和结尾处插入一个字符

我原本是用split()函数来查找以“http”开头的空格和字符串的。

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

那么,有没有办法,我通过整个字符串进行扫描来查找和修改这些网址:然而,当一个字符串持有它,例如,像这样这种情况下失败?

为清楚起见,我在寻找:

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

这也将有以 “https” 工作。

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

+0

你应该使用正则表达式。不要依赖空间。 –

+0

正则表达式在开始和结束时添加所需值的最佳选项。 –

回答

2

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

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));

+0

如果内容的网址为“google.com”,这个工作是否可以将“(https?| ftp | file):\/\ /”部分的限制修改为可选值 –

+0

这个工作非常好,谢谢!它甚至适用于多次发生(我忘记提及)。感谢您的摘录! – Ronan

0

查找http://的索引,然后结束时它将首次遇到非url允许的字符(空格,非字母数字,例外,/ ,.,#等)。

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

+0

好吧,我已经找到了一个好主意,如何找到多个索引;我将如何寻找第一个不允许的角色?我想象索引开始处的string.split(),然后扫描字符串的其余部分?我不太确定我将如何做最后一部分。 – Ronan

1
@Ivan答案

只是补充

您可以使用至REGx和替换()函数

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

希望这会有所帮助

相关问题