Имя: Пароль:
1C
1C 7.7
v7: Есть-ли в 7 - ке функция поиск по целым словам
0 Genri
 
31.03.12
23:29
Если в 7 - ке функция (поиск по целым словам) или я где - то туплю, не могу найти...
Найти(),СтрЧислоВхождений(), поиск идет ведет внутри каждого слова, а мне надо чтоб сравнивало слова целиком.
Подскажите плиз...
1 viktor_vv
 
31.03.12
23:32
Ну так ищи вот так " Твое слово ". правда по краям искать проблема.
2 viktor_vv
 
31.03.12
23:33
(1) Хотя не уверен, что не обрежет пробелы по краям. Ну и со знаками препинания тоже проблема.
3 Classic
 
31.03.12
23:35
(2)
Не обрежет.
4 Genri
 
31.03.12
23:40
короче я понял что нет жаль(
5 splayfooted
 
31.03.12
23:42
регулярные выражения
"(\s|^)(слово)\s*"
6 splayfooted
 
31.03.12
23:44
или
список = глРазложить(строка," ");
если список.найтиЗначение(солво)>0 then
предупреждение("Catch!");
7 splayfooted
 
31.03.12
23:47
если не поможет:
Функция глБыстрыйПоискПостроитьФразуПоиска( псТипПоиска, псСписПодстрокПоиска, псЛСтрПоискаТочная, псГде, псУсловияСцепки = " AND ") Экспорт
   ЗначВозврата = "";  
   Если глЭтоСкуль = 1 Тогда
       Если псТипПоиска = 0 Тогда //0-Точный
           ЗначВозврата = "
           |    PATINDEX("+псЛСтрПоискаТочная+", "+псГде+")>0";
       ИНачеЕсли псТипПоиска = 1 Тогда //1-расширенный
           ЗначВозврата = "";  
           СЦ = 0; лРазмерСЗ = псСписПодстрокПоиска.РазмерСписка();
           Для СЦ = 1 По лРазмерСЗ Цикл
               тСтр = псСписПодстрокПоиска.ПолучитьЗначение(СЦ);
               Если Найти(тСтр,"%!")>0 Тогда
                   тСтр = СтрЗаменить(тСтр,"%!","%");
                   ЗначВозврата = глДобавитьКСтроке(ЗначВозврата, "NOT PATINDEX("+тСтр+", "+псГде+")>0 ",псУсловияСцепки);
               ИНаче                    
                   ЗначВозврата = глДобавитьКСтроке(ЗначВозврата, " PATINDEX("+тСтр+", "+псГде+")>0 ",псУсловияСцепки);
               КонецЕсли;
           КонецЦикла;
           ЗначВозврата = "(" + ЗначВозврата + ")";  
       Иначе  // 2-Отключить или другое....
           // тут возвращаем пустое значение......
       КонецЕсли;
   Иначе
       //LIKE ""%" + СокрЛП(ВыбСерийныйНомер) + "%"""
       Если псТипПоиска = 0 Тогда //0-Точный
           ЗначВозврата = "
           |    UPPER(" + псГде + ") LIKE  "+псЛСтрПоискаТочная+" ";
       ИНачеЕсли псТипПоиска = 1 Тогда //1-расширенный
           ЗначВозврата = " (
           |";  
           СЦ = 0; лРазмерСЗ = псСписПодстрокПоиска.РазмерСписка();
           Для СЦ = 1 По лРазмерСЗ Цикл
               тСтр = псСписПодстрокПоиска.ПолучитьЗначение(СЦ);
               ЗначВозврата = ЗначВозврата +" UPPER("+ псГде + ")    LIKE "+тСтр+" ";
               Если (лРазмерСЗ <> СЦ) И (лРазмерСЗ>1) Тогда
                   ЗначВозврата = ЗначВозврата + псУсловияСцепки; //+" AND ";
               КонецЕсли;
           КонецЦикла;
           ЗначВозврата = ЗначВозврата + ")";  
       Иначе  // 2-Отключить или другое....
           // тут возвращаем пустое значение......
       КонецЕсли;
   КонецЕсли;
   Возврат ЗначВозврата;
КонецФункции // ПостроитьФразуПоиска()
8 Genri
 
01.04.12
00:11
(7)Оп-па попробую
9 Genri
 
01.04.12
00:11
(5)не совсем понял
10 splayfooted
 
01.04.12
11:23
глРегВыр  = СоздатьОбъект("VBScript.RegExp");
глРегВыр.IgnoreCase = 1;
глРегВыр.Global = 1;
глРегВыр.Pattern = "(\s|^)(твоецелоеслово|твоецелоеслово2|твоецелоеслово3)\s*";
Matches = глРегВыр.Execute(СокрЛП(псСтрДляПроверки));
СЦ = 0;
Для СЦ = 1 По Matches.Count() Цикл
   Сообщить(Matches.Item(СЦ-1).Value);
КонецЦикла;
11 Genri
 
01.04.12
18:19
(10)Спасиб, помогло.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.