我想从网址或某个标题字符串中提取商店/品牌名称。
所以网址可能是
"http://www.store1.com/brand1-Transform-Ultra-Prepaid-/"
and title could be " brand1 Transform Ultra Prepaid Phone "
我会将可能的商店名称保存在像
这样的数组中var store_array = ['store1', 'brand1', 'brand2']
我想说如果我搜索上面的网址或标题,我应该得到store1和brand1。
如何在jquery中这样做,我是初学者,请详细解释一下。
我最初的想法是我应该低于,但不确定。请帮忙。
$.each( store_array, function(index, value) {
//这里做什么 });
答案 0 :(得分:0)
你可以这样做:
var url = 'http://www.store1.com/brand1-Transform-Ultra-Prepaid-/',
path = url.split('/');
var store_array = path[path.length-2].split('-');
这一切都取决于你想要的动态,另一种选择是正则表达式:
var url = 'http://www.store1.com/brand1-Transform-Ultra-Prepaid-/';
var store_array = url.replace(/http:\/\/www.store1.com\/([^\/]+)\//,'$1').split('-');
答案 1 :(得分:0)
你可以使用split功能: 让我们说网址是:
url=window.location.href;
url.split('http://www.store1.com/');
title=url[1];
如果“brand1-Transform-Ultra-Prepaid-”所需的单词是“brand1”,那么请再次拆分:
title.split('-');
fixed_title=title[0];
答案 2 :(得分:0)
我会定义一个函数来进行匹配,并在我感兴趣的字符串上运行它
function findMatches( str ){
return store_array.filter( function( el ){
return new RegExp( "\b"+el+"\b", "i" ).test( str );
});
}
var results1 = findMatches( 'http://www.store1.com/' );
var results2 = findMatches( " brand1 Transform Ultra Prepaid Phone " );
//etc
\ b确保'store1'等是完整的单词(因此,'store1'与'megastore1'不匹配)并且/ i使其不区分大小写。
array.filter在数组的每个成员上运行一个函数,并返回一个数组的副本,只包含那些函数返回true的成员。请注意,array.filter是IE9及更高版本(您没有指定平台),对于其他浏览器,这里有anice polyfill https://gist.github.com/1031656
findMatches函数遍历列表中的所有字符串,将它们转换为正则表达式,并检查它是否在字符串中找到。如果你有很多测试字符串,那么运行indexof
可能更有效function findMatches( str ){
return store_array.filter( function( el ){
return ( "-1" !== str.indexOf( el ) );
});
}
要么工作。请注意,这不是使用jQuery,只是简单的JS(尽管是ECMA5)