Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   [работа со строками] Спасайте.. не могу сообразить.. (https://javascript.ru/forum/misc/29782-%5Brabota-so-strokami%5D-spasajjte-ne-mogu-soobrazit.html)

V2oD2o 11.07.2012 10:41

[работа со строками] Спасайте.. не могу сообразить..
 
есть например артикул товара: 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

Deff 11.07.2012 11:29

var str='LUXLITE 8A5 98 77.14-22';
var X='LU' //Тестовая подстрока
var Test ='/'+X+'/gm';
var OutNumSumb = str.search(eval(Test)); //Ищем index Первого вхождения Подстроки в тестируемом контенте(номер символа от начала
alert(OutNumSumb)

Deff 11.07.2012 11:31

Цитата:

Сообщение от V2oD2o
т.е. LUXLITE 8A5 98 77.14-22 - как отловить LU, и точно знать что это буквы, а не цифры?

Приведите еще пяток примеров -мало инфы и по ходу Вопрос полностью не исчерпан

V2oD2o 11.07.2012 11:54

Цитата:

Сообщение от Deff (Сообщение 188012)
Приведите еще пяток примеров -мало инфы и по ходу Вопрос полностью не исчерпан

Спасибо что отозвался)

ну суть в чем..
пользователь вводит в строку поиска 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

Цитата:

Сообщение от V2oD2o (Сообщение 188019)
Спасибо что отозвались ребят..

ну суть в чем..
пользователь вводит 8A5 98 77.14-22, режем и по базе ищем - 8A598771422, вываливаем:
LUXLITE 8A5 98 77.14-22
JASONS 8.A598-77142.2

пользователь должен ткнуть лишний раз чтоб выбрать именно то что ему надо.. вот это дело - надо убить..

ну и выводите ему сразу LUXLITE

V2oD2o 11.07.2012 12:07

а откуда я знаю что ему надо LUXLITE если он ввел лишь только артикул.. с учетом того что LUXLITE это например под этим артикулом - мешок риса, а JASONS это яд для крыс..

lord2kim 11.07.2012 12:14

Цитата:

Сообщение от V2oD2o (Сообщение 188021)
а откуда я знаю что ему надо LUXLITE если он ввел лишь только артикул.. с учетом того что LUXLITE это например под этим артикулом - мешок риса, а JASONS это яд для крыс..

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

nerv_ 11.07.2012 12:19

Цитата:

Сообщение от V2oD2o
LUXLITE 8A5 98 77.14-22 - как отловить LU, и точно знать что это буквы, а не цифры?

var text = 'LUXLITE 8A5 98 77.14-22';

alert( /^[A-Z]{2,}/.exec( text ) );

Deff 11.07.2012 12:48

V2oD2o,
Составьте массив Выбора

Arraychoice = new Array(
"LUXLITE 8A5 98 77.14-22",
"JASONS 8.A598-77142.2",
"И т.д."
)

Далее ищите по Введенной Пользователем подстроки по массиву и заменяете его запись, - на полную,
Регулярки серьезной даже не надо, - нужно ток отформатировать введенную строку -убрать из введенной строки пробелы и вставить заново стандартным макаром(1 пробел меж словами далее поиск через indexOf

V2oD2o 11.07.2012 12:58

Цитата:

Сообщение от nerv_ (Сообщение 188023)
var text = 'LUXLITE 8A5 98 77.14-22';

alert( /^[A-Z]{2,}/.exec( text ) );

ВОТ! :D


Часовой пояс GMT +3, время: 05:59.