2012-03-25 202 views
0

我想从URL或某些标题字符串中提取商店/品牌名称。从另一个url或字符串中提取字符串

这样的URL可以是这样的

"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

我不明白你想要什么。 – gdoron 2012-03-25 20:58:11

+0

编辑它,写了可能的结果。 – asm234 2012-03-25 21:02:33

回答

0

你可以这样做:

var url = 'http://www.store1.com/brand1-Transform-Ultra-Prepaid-/', 
    path = url.split('/'); 

var store_array = path[path.length-2].split('-'); 

演示:http://jsfiddle.net/jcGsp/

这一切都取决于你想怎么动它是另一种选择将是一个正则表达式:

var url = 'http://www.store1.com/brand1-Transform-Ultra-Prepaid-/'; 

var store_array = url.replace(/http:\/\/www.store1.com\/([^\/]+)\//,'$1').split('-'); 

演示: http://jsfiddle.net/fSpr3/

+0

抱歉无法理解我将如何在此搜索品牌名称。 也,使用window.location.host很容易找到商店名称。我更关心搜索品牌名称 – asm234 2012-03-25 21:05:36

+0

我的答案中的'store_array'包含URL路径中包含的所有品牌的数组,这是不是你问的? – David 2012-03-25 21:08:44

0

您可以使用拆分功能: 让我们说的网址是:

title.split('-'); 
fixed_title=title[0]; 
0

我会定义:

url=window.location.href; 
url.split('http://www.store1.com/'); 
title=url[1]; 

如果从“brand1 - 转换 - 超Prepaid-”所需要的字是“brand1”,然后再次拆分此函数来完成匹配,和我感兴趣的

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中的串运行,确保“商店1”等都是完整的单词(所以,“商店1”不匹配“megastore1”)和/我使它不区分大小写。

array.filter在数组的每个成员上运行一个函数,并返回该数组的副本,只有那些函数返回true的成员。需要注意的是array.filter是IE9及以上(没有指定的平台),对于其他的浏览器有anice填充工具在这里https://gist.github.com/1031656

的findMatches功能经过列表中的所有字符串,并将其转换为正则表达式,并检查它是否在字符串中找到。如果你有很多测试字符串,运行索引可能会更有效率

function findMatches(str){ 
    return store_array.filter(function(el){ 
    return ("-1" !== str.indexOf(el)); 
    }); 
} 

两者都可以工作。请注意,这不是使用jQuery,只是纯JS(尽管ECMA5)

+0

谢谢,你的解决方案有点接近想要的结果。但是,我已经清除了网址和标题,然后再对它们执行任何搜索。例如我做URL.toLowerCase()。replace(this.ft9_alpha_num_rgx,''),并找到indexOf使用小写。 – asm234 2012-03-25 21:54:19