|
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)Спасиб, помогло.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |