База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в 1С сравнить символы в строке на совпадение? › RE: Как в 1С сравнить символы в строке на совпадение?
Для сравнения последовательности символов в строке на совпадение в 1С можно использовать несколько способов, в зависимости от задачи:
1. **Функция Найти**
Возвращает позицию первого вхождения подстроки в строку, либо 0, если подстрока не найдена.
Пример:
|
1 2 3 4 5 6 7 8 9 |
1C Строка = "Пример строки для поиска"; Подстрока = "строки"; Позиция = Найти(Строка, Подстрока); Если Позиция > 0 Тогда Сообщить("Подстрока найдена на позиции " + Позиция); Иначе Сообщить("Подстрока не найдена"); КонецЕсли; |
2. **Оператор сравнения = для точного совпадения**
Если нужно проверить, что вся строка равна другой строке или что часть строки равна определённой последовательности, можно использовать Сред и сравнение:
|
1 2 3 4 5 6 7 8 9 |
1C Строка = "Пример строки"; Последовательность = "строки"; Позиция = Найти(Строка, Последовательность); Если Позиция > 0 Тогда Если Сред(Строка, Позиция, СтрДлина(Последовательность)) = Последовательность Тогда Сообщить("Последовательность совпадает"); КонецЕсли; КонецЕсли; |
3. **Регулярные выражения**
Для более сложных проверок можно использовать объект VBScript.RegExp:
|
1 2 3 4 5 6 7 8 9 10 |
1C Рег = Новый COMОбъект("VBScript.RegExp"); Рег.Pattern = "последовательность"; // или более сложный шаблон Рег.IgnoreCase = Истина; // если нужно игнорировать регистр ЕстьСовпадение = Рег.Test(Строка); Если ЕстьСовпадение Тогда Сообщить("Совпадение найдено"); Иначе Сообщить("Совпадение не найдено"); КонецЕсли; |
4. **Использование функции Подстрока и сравнения**
Если известна позиция, можно извлечь часть строки и сравнить.
—
**Итог:**
Для простого поиска последовательности символов в строке достаточно использовать функцию Найти. Если нужна более сложная проверка — регулярные выражения.
—
Рекомендую посмотреть здесь:
— https://infostart.ru/public/186774/
— https://helpf.pro/faq/view/278.html
— https://infostart.ru/1c/articles/824965/