2016-08-13 94 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);

希望這會有所幫助

相關問題