|
Поиск конкретной строки | ☑ | ||
---|---|---|---|---|
0
Flempy
13.01.22
✎
12:27
|
Например, имеется следующий массив строк "нипель hs28" и "нипель hs28-01"
как можно указать условие, чтобы при поиске строки "нипель hs28" не выдавало строку "нипель hs28-01"? |
|||
1
ДенисЧ
13.01.22
✎
12:29
|
При каком поиске? Если указать в запросе = то ищет строго.
А где ты ищешь - мы не можем угадать |
|||
2
SuperMario
13.01.22
✎
12:29
|
Свой поиск организуй через запрос.
|
|||
3
SuperMario
13.01.22
✎
12:29
|
(1) предполагаю, что на форме списка )
|
|||
4
Flempy
13.01.22
✎
12:34
|
(1) Для каждого строка из МассивСтрок Цикл
Если СтрНайти(строка.Наименование, ИскомаяСтрока) Тогда строка.Наименование = СтрЗаменить(строка.Наименование, ИскомаяСтрока, ""); КонецЕсли; КонецЦикла |
|||
5
1Сергей
13.01.22
✎
12:37
|
(4) Если строка.Наименование=ИскомаяСтрока Тогда
|
|||
6
Flempy
13.01.22
✎
12:38
|
(5) "Строка.наименование" не будет содержать только искомую строку
|
|||
7
Kassern
13.01.22
✎
12:42
|
(6) типа "нипель hs28" и "нипель hs28 черный" можно, а "нипель hs28-01" исключить так?
|
|||
8
Flempy
13.01.22
✎
12:43
|
Была мысль, проверять, чтобы слева и справа искомой строки были пробелы и только тогда продолжать
Если СтрНайти(строка.Наименование, " " + ИскомаяСтрока + " ") Тогда Однако справа не всегда будет стоять пробел и тогда условие не работает |
|||
9
Иванович Михаил
13.01.22
✎
12:44
|
(8) Ты сформулируй задачу нормально.
|
|||
10
Flempy
13.01.22
✎
12:44
|
(7) да, все верно
|
|||
11
Kassern
13.01.22
✎
12:48
|
(8) ну так проанализируйте все варианты комбинаций возможных у вас в списках и придумайте алгоритм. В крайнем случае можно посмотреть в сторону регулярных выражений
|
|||
12
Kassern
13.01.22
✎
12:50
|
я так понимаю с получением артикулов и гуидов совсем бяда, что приходится по наименованию сопоставлять?
|
|||
13
1Сергей
13.01.22
✎
12:52
|
Основная задача какая? Что-то грузите извне?
|
|||
14
Flempy
13.01.22
✎
12:53
|
(12) Типа того. Но все равно, в данном случае я работаю только со строкой, а не с конкретной номенклатурой
|
|||
15
Kassern
13.01.22
✎
12:56
|
(14) строки разные бывают, те же xml/json тоже строка, но там можно без проблем уникальное поле для сопоставления указать
|
|||
16
Flempy
13.01.22
✎
12:58
|
(13) https://ibb.co/t2XW4LZ
Из поля "Тип резьбы" табличной части нужно перенести "HLST40" в поле "Типоразмер" |
|||
17
acht
13.01.22
✎
12:59
|
(8)
ВсеДопустимыеРазделители = " "; НаборСлов = СтрРазделить(ВРег(строка.Наименование), ВсеДопустимыеРазделители, Ложь); Нашли = НаборСлов.Найти(ВРег(ИскомаяСтрока)) > 0; |
|||
18
Галахад
гуру
13.01.22
✎
13:00
|
(8)
Если СтрНайти(строка.Наименование, " " + ИскомаяСтрока + " ") ИЛИ СтрНайти(строка.Наименование, " " + ИскомаяСтрока) ИЛИ СтрНайти(строка.Наименование, ИскомаяСтрока) Тогда |
|||
19
acht
13.01.22
✎
13:00
|
<> Неопределено конечно же
|
|||
20
acht
13.01.22
✎
13:00
|
(18) А это еще проще
Если СтрНайти(" " + строка.Наименование + " ", " " + ИскомаяСтрока + " ") Тогда |
|||
21
Галахад
гуру
13.01.22
✎
13:02
|
(20) Не пойдет
строка.Наименование = АА_А_А ИскомаяСтрока = АА |
|||
22
Ryzeman
13.01.22
✎
13:03
|
(16) как эта задача связана с (0)?
(8) Что делать с "нипель hs28_зелёный"? (18) По третьему условию найдётся и "нипель hs28-01". Первые два вообще зачем? |
|||
23
Ryzeman
13.01.22
✎
13:05
|
(0) ответ в (11). Если у тебя все "неправильные" значения с добавлением -XX, то надо и придумывать алгоритм который их отфильтрует. Универсальных каких-то решений тут нет, потому что ХЗ что там в твоей базе как заполнено и задвоено.
|
|||
24
Flempy
13.01.22
✎
13:10
|
(22)
1. Напрямую 2. Не выводить, нужно найти лишь конкретную искомую строку 3. Да, согласен |
|||
25
Flempy
13.01.22
✎
13:11
|
(23) Да, я понимаю, просто думал может есть какое-то универсальное решение
|
|||
26
Ryzeman
13.01.22
✎
13:14
|
(24) Проверка на равенство? Если строка.Наименование = ИскомаяСтрока Тогда
Но в (10) ты сам пишешь что надо что б находило несколько значений по одной строке поиска, нет? В остальных случая какие могут быть универсальные решения, если "нипель hs28-01" это неправильная строка, а "нипель hs28-красный" это правильная, например? |
|||
27
Flempy
13.01.22
✎
13:42
|
(26) https://ibb.co/t2XW4LZ
Искаться будет не вся строка, а в данном случае только HLST40 и соответственно, проверка на равенство не подходит. "нипель hs28-красный" как раз таки не будет искомой строкой, просто в (7) не совсем удачный пример. Нужно лишь два условия для выполнения моей задачи: Искомая строка "hs28" 1. Если в строке которой я ищу, искомая строка будет обрамлена пробелами (например,под это условие подходит строка "нипель hs28 черный") 2. Либо если слева от искомой строки есть пробел, а справа строка закончена (в данном случае подходит "нипель hs28") "нипель hs28-01" под эти условия не подходит, так и должно быть, однако я не знаю, как реализовать второе условие |
|||
28
pechkin
13.01.22
✎
13:44
|
Подобно "%hs28 _пробел_%" или подобно "%hs28"
|
|||
29
Flempy
13.01.22
✎
13:47
|
наткнулся на "СтрЗаканчиваетсяНа()", как раз то что нужно.
Всем большое спасибо за помощь! |
|||
30
Ryzeman
13.01.22
✎
14:03
|
(27) Вот если б ты сразу задачу так сформулировал, то скорее всего тебе бы помогли и быстрее)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |