извлечение строки из другого URL или строки - PullRequest
0 голосов
/ 26 марта 2012

Я хочу извлечь названия магазинов / брендов из 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']

скажем, если я буду искать вышеуказанный URL или заголовок, я должен получить store1 и brand1 в результате.

как это сделать в jquery, я новичок, пожалуйста, объясните мне подробно.

Моя первоначальная идея состоит в том, что я должен быть ниже, но не уверен. пожалуйста, помогите.

$.each( store_array, function(index, value) { 

// что тут делать });

Ответы [ 3 ]

0 голосов
/ 26 марта 2012

вы можете использовать функцию разделения: скажем, URL-адрес:

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

если слово "brand1-Transform-Ultra-Prepaid-", необходимое для этого слова, - "brand1", то разделите это снова на:

title.split('-');
fixed_title=title[0];
0 голосов
/ 26 марта 2012

Я бы определил функцию для сопоставления и запустил бы ее на интересующих меня строках

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» не будет't match' megastore1 ') и / i делает его нечувствительным к регистру.

array.filter запускает функцию для каждого члена массива и возвращает копию массива только с теми членами, для которых функция возвращаетправда.Обратите внимание, что 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)

0 голосов
/ 26 марта 2012

Вы можете сделать:

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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...