Javascript JS函数卡在循环中
所以,这里是我的函数:它应该从输入中提取链接。(从http或类似的地方开始,然后在“”处结束)。问题是我无法调试这个函数的工作情况,因为它在循环中阻塞。我试着查了一下原因,还是说不出来Javascript JS函数卡在循环中,javascript,Javascript,所以,这里是我的函数:它应该从输入中提取链接。(从http或类似的地方开始,然后在“”处结束)。问题是我无法调试这个函数的工作情况,因为它在循环中阻塞。我试着查了一下原因,还是说不出来 function linkify(input) { if (input === undefined || input == null) return input; var tinput = input; var urlextr = ""
function linkify(input)
{
if (input === undefined || input == null)
return input;
var tinput = input;
var urlextr = "";
var url = [""];
var num = 0;
//search for "http://" first
while(tinput.match(/http:\/\//gi) != null)
{
console.log("http");
urlextr=tinput.substring(tinput.search("http://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "https://"
while(tinput.match(/https:\/\//gi) != null)
{
console.log("https");
urlextr=tinput.substring(tinput.search("https://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "ftp://" (Why not?)
while(tinput.match(/ftp:\/\//gi) != null)
{
console.log("ftp");
urlextr=tinput.substring(tinput.search("ftp://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "www.*" (Must be last!)
while(tinput.match(/www./gi) != null)
{
console.log("www");
urlextr=tinput.substring(tinput.search("www."));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
console.log(url);
return output;
}
我假设您有一个字符串,其中包含用空格分隔的不同URL。问题在于
urlextr=urlextr.substring(0,urlextr.search(" "));
如果您正在处理字符串中的最后一个URL
,它将始终返回一个空字符串,从而使循环无限期运行。要解决这个问题,你可以做下面这样的事情
urlextr=tinput.substring(tinput.search("http://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
if (!urlextr) {
url[num] = tinput.trim();
break;
}
url[num] = urlextr;
url[num+1] = urlextr;
我假设您有一个字符串,其中包含用空格分隔的不同URL。问题在于
urlextr=urlextr.substring(0,urlextr.search(" "));
如果您正在处理字符串中的最后一个URL
,它将始终返回一个空字符串,从而使循环无限期运行。要解决这个问题,你可以做下面这样的事情
urlextr=tinput.substring(tinput.search("http://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
if (!urlextr) {
url[num] = tinput.trim();
break;
}
url[num] = urlextr;
url[num+1] = urlextr;
不大可能发生的第二个使用html字符串。对我来说,它应该是:“随机消息和链接www.stackoverflow.com www.youtube.com等。”该函数将读取链接,然后在提取所有URL后更改链接。不使用任何其他JS。第二个使用html字符串。对我来说,它应该是:“随机消息和链接www.stackoverflow.com www.youtube.com等。”该函数将读取链接,然后在提取所有URL后更改链接。不使用任何其他有效的JSF,但它破坏了函数本身,因为数组有下一个顺序:每个偶数(0,2,4,6…)都有完整的URL,而每个奇数都有一个缩短的URL,或者用户是如何编写的。
URL[num]=urlextr;url[num+1]=urlextr代码>在这里,您将为数组元素指定相同的值-您需要修复已修复的代码,感谢您的帮助。我已经想出了我的解决办法。所以函数完美地分离了工作的内容,但它破坏了函数本身,因为数组有下一个顺序:每个偶数(0,2,4,6…)都有完整的URL,而每个奇数都有一个缩短的URL,或者用户如何编写它;url[num+1]=urlextr代码>在这里,您将为数组元素指定相同的值-您需要修复已修复的代码,感谢您的帮助。我已经想出了我的解决办法。所以函数完美地将事物分开