|
Поиск Слова целиком в строке | ☑ | ||
---|---|---|---|---|
0
antiteror91
25.12.13
✎
14:20
|
Скажите пожалуйста есть ли функция которая может найти слово целиком в строке?
|
|||
1
Wobland
25.12.13
✎
14:21
|
да
|
|||
2
antiteror91
25.12.13
✎
14:21
|
(1) какая??
|
|||
3
The_SpecialOne
25.12.13
✎
14:22
|
Найти
|
|||
4
antiteror91
25.12.13
✎
14:22
|
(0) глобальная замена не устраивает.
|
|||
5
1Сергей
25.12.13
✎
14:22
|
Найти(Где, " "+Слово+" ")
|
|||
6
Wobland
25.12.13
✎
14:23
|
(3) а как с пробелами быть?
(2) вроде матч(). у регекспа |
|||
7
Fragster
гуру
25.12.13
✎
14:24
|
автор, наверное, имеет ввиду, чтобы при поиске "долбил" не находилось "продолбил". тут надо либо проверять символы до/после, либо воспользоваться регулярным выражением "\bдолбил\b"
http://infostart.ru/public/75941/ |
|||
8
Wobland
25.12.13
✎
14:24
|
"а лампочку в подъезде кто выкрутил?Пушкин Александр Сергеевич?"
|
|||
9
antiteror91
25.12.13
✎
14:24
|
(3) найти ищет подсроку а мне нужно слово целиком "фотограф сделал фото" если я буду искаить с помощью найти то мне покажет слово "фотограф"
|
|||
10
Fragster
гуру
25.12.13
✎
14:24
|
(5) "дятел долбил, а потом устал"
|
|||
11
WildSery
25.12.13
✎
14:24
|
(5) Найти(" " + Где + " ", " " + Слово + " ")
|
|||
12
Fragster
гуру
25.12.13
✎
14:24
|
или просто "долбил"
|
|||
13
1Сергей
25.12.13
✎
14:26
|
(11) знаки препинания надо убрать. (10)+1
|
|||
14
Fragster
гуру
25.12.13
✎
14:28
|
(13) не только. если просто с пробелами искать - то еще и табуляции убрать, а также добавить пробелы в начале и конце.
проще (7) |
|||
15
antiteror91
25.12.13
✎
14:28
|
(11) на примере строки "фотограф сделал фото, круто!" покажите пожалуйста а то я не очень понимаю пока...
|
|||
16
antiteror91
25.12.13
✎
14:31
|
(11) просто за словом могут быть различные знаки припенания точка, запятая, скобка. не прописывать же это для каждого знака припинания.
|
|||
17
bolobol
25.12.13
✎
14:32
|
Чушь! Пропускаем буквы, остальное меняем на пробелы, окружаем строку пробелами. Нужное нам слово окружено пробелами. Хитрость +3!
|
|||
18
1Сергей
25.12.13
✎
14:33
|
(17) ага, при поиске мильон строк так обработать
|
|||
19
bolobol
25.12.13
✎
14:34
|
Засадим строку, окружённую пробелами, в запрос. В запросе укажем искать НЕ буква + Слово + НЕ буква. Интеллект +5!
|
|||
20
1Сергей
25.12.13
✎
14:35
|
(19) если у тебя запрос будет 15 минут выполняться, то у тебя будет: Зубы -1!
|
|||
21
antiteror91
25.12.13
✎
14:37
|
нужен механизм как в глобальной замене... но я его хочу в обработку включить....
|
|||
22
bolobol
25.12.13
✎
14:38
|
(18) Во первых, задачи бывают разные. И быстрое программирование в 90% случаев закрывает задачу _быстро_! А вам Навыки -2 кто-то колданул. У каждой отдельной задачи есть эффективное решение, эффективно - выбрать буквы, а не заменять все прочие символы.
|
|||
23
1Сергей
25.12.13
✎
14:40
|
(22) угу, угу. +5 к быдлокодингу
|
|||
24
bolobol
25.12.13
✎
14:40
|
(20) Если запрос выполнился результативно, то Зубы +5 будут!(премия позволит) Для этого и есть тестирование. Вот когда с тестированием не алё, то будет -1 штатный сотрудник))
|
|||
25
Fragster
гуру
25.12.13
✎
14:48
|
(19) а если надо число вхождений? или замену?
|
|||
26
antiteror91
25.12.13
✎
14:52
|
(25) да с числом вхождений тоже проблема... потому что найти ищет позицию первого вхождения....
|
|||
27
bolobol
25.12.13
✎
14:57
|
(25) (26) Число вхождений - отрезаем то, что нашли, ищем снова - строка уже подготовлена.
|
|||
28
Fragster
гуру
25.12.13
✎
14:59
|
(27) ты же запросом нашел факт вхождения, а не позицию. а с Найти - там нету [не буква]
|
|||
29
bolobol
25.12.13
✎
15:02
|
(28) Предлагаете решить запросом число вхождений? (это даже интересно, с условием без запроса в цикле)
А по заменам, обработка 10 000 строк по алгоритму замен не букв, на толстом клиенте на ай3 длится менее минуты. Длины наименований <= 40. |
|||
30
Fragster
гуру
25.12.13
✎
15:03
|
(29) дык еще список "не букв" нужно правильный составить. + вернуть в нормальное состояние строку (если мы говорим о создании СтрЗаменить)
|
|||
31
bolobol
25.12.13
✎
15:05
|
(30) Нет! Без СтрЗаменить, хотя, с её применением, возможно, можно бОльшую скорость получить. А /не буква/ заменяется как именно... Оппа, вспомнил про код символа...
|
|||
32
bolobol
25.12.13
✎
15:06
|
(30) Да, и возвращать строку к нормальному виду не требуется, т.к. мы создаём поисковый аналог.
|
|||
33
Fragster
гуру
25.12.13
✎
15:08
|
(31) использование КодСимвола для определения "буква это, или нет" - это жуткий говнокод.
|
|||
34
bolobol
25.12.13
✎
15:08
|
В любом случае, должен помочь полнотекстовый поиск, разве нет?
|
|||
35
bolobol
25.12.13
✎
15:09
|
(33) Да ну! Вы программисту С++ расскажите об этом))))
|
|||
36
antiteror91
25.12.13
✎
15:11
|
(33) у меня была идея проверять последующий символ через код символа но использовать поиск знака припинания а не буквы.
|
|||
37
Fragster
гуру
25.12.13
✎
15:14
|
(35) кодовые страницы - вещь коварная + в юникоде множество алфавитов, некоторые даже с разрывами идут.
|
|||
38
bolobol
25.12.13
✎
15:16
|
(37) Кодовые страницы стандартизированы. И, ежели стандарт поменяется, это как... не знаю... с Виндовса на Линухе байт код запустить и удивляться.
|
|||
39
dj_serega
25.12.13
✎
15:19
|
Кто поможет ТС +10 к карме.
|
|||
40
Fragster
гуру
25.12.13
✎
15:23
|
(39)->(7)
|
|||
41
Fragster
гуру
25.12.13
✎
15:24
|
(38) я к тому, что для каких-то простейших случаев типа ASCII знаков препинания или там английского алфавита - сработает. Даже для русского сработает , только Ё отдельно, ЕМНИП, лежит. А вот запятых всяких и прочих непотребностей, немецких/испанских умляутов и прочей гадости - вообще навалом.
|
|||
42
bolobol
25.12.13
✎
15:29
|
(41) Ну как тут... Слово на любом языке найти, не дав программе алфавит - задача не реализуемая, т.к. любая буква, не используемая в поисковом слове, будет опознаваться как знак.
|
|||
43
Fragster
гуру
25.12.13
✎
15:35
|
(42) ну хотя бы заменив КодСимвола на массив допустимых символов или массив знаков препинания - меньше говнокода (да, работает подольше). но тут уже возникает вопрос в поддержании актуальности этих массивов.
|
|||
44
Fragster
гуру
25.12.13
✎
15:35
|
для данной конкретной задачи я за (7), равно как и за число вхождений и за замену
|
|||
45
bolobol
25.12.13
✎
15:51
|
Там, в (7), только реклама с комментариями. В чём там решение?, не понял.
А регэкспы в самой операционной системе есть, вызывается как СОМ объект, только как-то не уверен, что быстрее будет, чем внутри 1С. А вот с точки зрения программирования, предлагаемый в (43) метод - это намеренное понижение производительности, дабы не выражаться. Методы необходимо использовать заложенные в систему, а уж личное мнение, каким будет такой код, если система гомно - это личное мнение. |
|||
46
Fragster
гуру
25.12.13
✎
15:57
|
(45) искомое регулярное выражение дано.
|
|||
47
bolobol
25.12.13
✎
16:00
|
А вот если анализируется текст кода, то к буквам ещё и символы и знак подчёркивания в алфавит добавляются.
Как способ проверить на вход в алфавит, с наглядностью самого алфавита, это Найти("алфавит", Сред(СтрокаПоиска, ПозицияПроверяемогоСимвола, 1) (46) А куда вставлять данное регулярное выражение? |
|||
48
Fragster
гуру
25.12.13
✎
16:07
|
(47) если в (7), то в поле ввода Паттерн, если автор смог набрать в гугле 1с регулярные выражения - то скорее свего в поле Pattern объекта VBScript.RegExp, хотя тут возможны варианты
|
|||
49
Fragster
гуру
25.12.13
✎
16:08
|
кстати, надо бы на управляемых формах запилить :)
|
|||
50
bolobol
25.12.13
✎
16:12
|
(48) А, так вот этот вариант с ВБСкрипт - насколько производительным будет, относительно внутренностей 1С?
|
|||
51
Fragster
гуру
25.12.13
✎
16:15
|
(50) для выражения из (7) для предложенной задачи - будет быстрее скорее всего. Из-за необходимости кроме собственно поиска обрабатывать строку в 1с, что 1с умеет весьма плохо
|
|||
52
bolobol
25.12.13
✎
16:25
|
Вот не поспорю никак - не умею код для вызова на раз написать. А так бы проветрил на своей базе номенклатур...
|
|||
53
Kvestin
25.12.13
✎
16:59
|
Надо конечно сравнивать скорость через регулярки и код 1С.
Я предполагаю, что Найти в 1С реализовано не "в лоб", поэтому использовать его можно. Т.е по циклу: - ищем первое вхождение через Найти(СтрокаПоиска, ИскомоеСлово) - проверяем символ до и после слова на [буква]/[пробельный символ] (естественно учитываем границы строки, или добавляем пробел до и после исходной строки и не пишем условия на границу) - вырезаем слово и ищем дальше |
|||
54
Fragster
гуру
25.12.13
✎
18:23
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |