Просмотр полной версии : [работа со строками] Спасайте.. не могу сообразить..
есть например артикул товара: LUXLITE 8A5 98 77.14-22
обычно люди ищут по артикулу сразу без указания производителя, но! иногда у производителей совпадают артикулы и получается каша..
например запрос 8A5 98 77.14-22 - режем .replace(/[/\s/.,!?;]*/g, '') и ищем по базе..
оно выдаст например LUXLITE и JASONS, как в строке отловить что 2 первые буквы в строке идут друг за другом?
т.е. LUXLITE 8A5 98 77.14-22 - как отловить LU, и точно знать что это буквы, а не цифры? :-E
var str='LUXLITE 8A5 98 77.14-22';
var X='LU' //Тестовая подстрока
var Test ='/'+X+'/gm';
var OutNumSumb = str.search(eval(Test)); //Ищем index Первого вхождения Подстроки в тестируемом контенте(номер символа от начала
alert(OutNumSumb)
т.е. LUXLITE 8A5 98 77.14-22 - как отловить LU, и точно знать что это буквы, а не цифры?
Приведите еще пяток примеров -мало инфы и по ходу Вопрос полностью не исчерпан
Приведите еще пяток примеров -мало инфы и по ходу Вопрос полностью не исчерпан
Спасибо что отозвался)
ну суть в чем..
пользователь вводит в строку поиска 8A5 98 77.14-22, режем и по базе ищем - 8A598771422, вываливаем:
LUXLITE 8A5 98 77.14-22
JASONS 8.A598-77142.2
пользователь должен ткнуть лишний раз чтоб выбрать именно то что ему надо.. вот это дело - надо убить..
идея какая.. судя по человеческой логике что делаем? пишем в строку поиска сразу "LUXLITE 8A5 98 77.14-22".. значит что я хочу сделать, взять 2 первых символа - проверить - если буквы то копировать часть строки до пробела - в 90% случаев это и будет бренд артикула, сделать выборку в бд по способу выше, но вывалить только тот что с брендом LUXLITE..
вот. а если артикул еще короче этого? например "8857"..
что видим?:
ASB 8857
LUXE 8857
KAKA 8857
DIXY 5587
TRATATA 5587
берем "TRATATA 5587" - проверяем "TR" = буквы, копируем "TRATATA" - фильтруем, видим:
TRATATA 5587
ну, я думаю суть проблемы донес, зачем мне это :)
lord2kim
11.07.2012, 12:02
Спасибо что отозвались ребят..
ну суть в чем..
пользователь вводит 8A5 98 77.14-22, режем и по базе ищем - 8A598771422, вываливаем:
LUXLITE 8A5 98 77.14-22
JASONS 8.A598-77142.2
пользователь должен ткнуть лишний раз чтоб выбрать именно то что ему надо.. вот это дело - надо убить..
ну и выводите ему сразу LUXLITE
а откуда я знаю что ему надо LUXLITE если он ввел лишь только артикул.. с учетом того что LUXLITE это например под этим артикулом - мешок риса, а JASONS это яд для крыс..
lord2kim
11.07.2012, 12:14
а откуда я знаю что ему надо LUXLITE если он ввел лишь только артикул.. с учетом того что LUXLITE это например под этим артикулом - мешок риса, а JASONS это яд для крыс..
выводите первым что нибудь популярнее, на пример, а потом список остального, тут уже вы не виноваты, что артикулы практически одинаковые...
LUXLITE 8A5 98 77.14-22 - как отловить LU, и точно знать что это буквы, а не цифры?
var text = 'LUXLITE 8A5 98 77.14-22';
alert( /^[A-Z]{2,}/.exec( text ) );
V2oD2o,
Составьте массив Выбора
Arraychoice = new Array(
"LUXLITE 8A5 98 77.14-22",
"JASONS 8.A598-77142.2",
"И т.д."
)
Далее ищите по Введенной Пользователем подстроки по массиву и заменяете его запись, - на полную,
Регулярки серьезной даже не надо, - нужно ток отформатировать введенную строку -убрать из введенной строки пробелы и вставить заново стандартным макаром(1 пробел меж словами далее поиск через indexOf
var text = 'LUXLITE 8A5 98 77.14-22';
alert( /^[A-Z]{2,}/.exec( text ) );
ВОТ! :D
затык какой то..
function UpdateMainFrame(action,art) {
var brandart=/^[A-Z]{2,}/.exec(art.toUpperCase());
show('show_loading');
if (brandart!=null) {
action='get_art_and_brand';
art=brandart+"^"+art.slice(brandart.length-1);
alert(brandart.length);
}
почему brandart содержит ABCDEF - а alert выдает еденицу???
тоже починился, туплю просто:
brandart.toString().length;
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot