从另一个url或字符串中提取字符串

时间:2012-03-25 20:55:03

标签: javascript jquery jquery-ui

我想从网址或某个标题字符串中提取商店/品牌名称。

所以网址可能是

"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) { 

//这里做什么 });

3 个答案:

答案 0 :(得分: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/

答案 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)