String NodeJS for循环在修剪以数字结尾的URL时失败
我试图获取一组Facebook页面URL,并仅提取页面的实体标题。Ie for“”我只查找“BalanceSpaBoca”。此脚本适用于我使用的大多数示例数据(testFBurls数组),只打印修剪过的字符串。但对于其他字符串,它同时打印修剪后的字符串和原始字符串。看起来所有打印两次的URL都以一串数字结尾,但我不确定为什么这会对程序的运行方式产生任何影响String NodeJS for循环在修剪以数字结尾的URL时失败,string,node.js,facebook,for-loop,replace,String,Node.js,Facebook,For Loop,Replace,我试图获取一组Facebook页面URL,并仅提取页面的实体标题。Ie for“”我只查找“BalanceSpaBoca”。此脚本适用于我使用的大多数示例数据(testFBurls数组),只打印修剪过的字符串。但对于其他字符串,它同时打印修剪后的字符串和原始字符串。看起来所有打印两次的URL都以一串数字结尾,但我不确定为什么这会对程序的运行方式产生任何影响 var testFBurls = [ 'http://www.facebook.com/pages/A-Yoga-Way/36170
var testFBurls = [
'http://www.facebook.com/pages/A-Yoga-Way/361702000576231',
'http://www.facebook.com/aztigurbansalon',
'https://www.facebook.com/pages/Azzurri-Salon-Spa/542579982495983',
'https://www.facebook.com/BalanceSpaBoca',
'https://www.facebook.com/BocaAmericanNailsandSpa',
'http://www.facebook.com/beachyogagirl',
'https://www.facebook.com/pages/Beauty-of-Wax/156355679240',
'http://www.facebook.com/beehivefitness.boca',
'https://www.facebook.com/pages/Believe-Day-Spa-Boutique/197615685896',
'https://www.facebook.com/photo.php?fbid=10151725966640897&set=a.10151725965355897.1073741828.197615685896&type=1&theater',
'http://facebook.com/pages/bigfoot-spa/1486364798260300',
'http://www.facebook.com/bloheartsyou',
'http://www.facebook.com/pages/The-Wellness-Center-Of-Boca-Raton/170371382995576',
'https://www.facebook.com/TherapyBodyBalanced',
'https://www.facebook.com/pages/BodyVital-Massage/177664492277158',
'https://www.facebook.com/bodyworkmall',
'https://www.facebook.com/pages/The-Bombay-Room-Yoga-Studio/148731658497764',
];
var possibleFBurlStarts = [
"https://www.facebook.com/",
"http://www.facebook.com/",
"https://www.facebook.com/pages/",
"http://www.facebook.com/pages/",
];
for (var count=0; count<testFBurls.length; count++){
var currentURL = testFBurls[count];
if (currentURL.indexOf(".com/photo") > -1) {
testFBurls.splice(i, 1);
i--;
}
for (var i=0; i < possibleFBurlStarts.length; i++){
var indexOfSubstring = currentURL.indexOf(possibleFBurlStarts[i]);
if (indexOfSubstring > -1) {
var res = currentURL.replace(possibleFBurlStarts[i], "");
}
}
if (count == testFBurls.length-1){
console.log(testFBurls);
}
}
请注意,第一个url列出了两次(第一次以其原始形式,第二次以其截断形式),但第二个url(输出中的第三行)仅以截断形式列出。你知道是什么导致了这种差异吗?只应打印截断的url。您正在修改正在迭代的数组,而您正在迭代该数组:
testfbURL.splice(i,1)代码>这通常不是一件好事情。在任何情况下,我认为使用一个简单的正则表达式应该可以更轻松地实现目标:
for (var count=0; count<testFBurls.length; count++){
var matches = testFBurls[count].match(/^https?\:\/\/www\.facebook\.com\/(?:pages\/)?([^\/]+)/);
if (matches) {
console.log('found it:', matches[1]);
}
}
for(var count=0;countThank!非常有效,而且显然简单得多。关于如何将这样的正则表达式组合在一起供将来使用,有很多建议吗?但一旦你开始了解基本知识,就需要进行大量的尝试和错误。我使用它来根据目标评估正则表达式,看看在代码中实现它之前得到了什么。
for (var count=0; count<testFBurls.length; count++){
var matches = testFBurls[count].match(/^https?\:\/\/www\.facebook\.com\/(?:pages\/)?([^\/]+)/);
if (matches) {
console.log('found it:', matches[1]);
}
}