Функции работы со строками в 1С
Строки во встроенном языке не меняются «на месте»: каждая функция возвращает новую строку, а исходная остаётся прежней. Поэтому результат присваивают переменной: Текст = СокрЛП(Текст);. Пример со всеми частыми функциями — его можно вставить в обработку «Практика» из урока Встроенный язык:
&НаКлиенте
Процедура Пример(Команда)
Текст = " Карандаш простой ";
Чистый = СокрЛП(Текст);
Сообщить("[" + Чистый + "]");
Сообщить(СтрДлина(Чистый));
Сообщить(Лев(Чистый, 4));
Сообщить(Прав(Чистый, 7));
Сообщить(Сред(Чистый, 3, 4));
Сообщить(СтрНайти(Чистый, "ан"));
Сообщить(СтрЗаменить(Чистый, " ", "_"));
Сообщить(ВРег(Чистый));
КонецПроцедуры[Карандаш простой]
16
Кара
простой
ранд
4
Карандаш_простой
КАРАНДАШ ПРОСТОЙЧто делает каждая
| Функция | Что возвращает |
|---|---|
СтрДлина(Строка) | число символов |
СокрЛП(Строка) | строку без пробелов в начале и в конце; СокрЛ — только в начале, СокрП — только в конце |
Лев(Строка, N) | первые N символов |
Прав(Строка, N) | последние N символов |
Сред(Строка, Начало, N) | N символов, начиная с позиции Начало (позиции считаются с 1) |
СтрНайти(Строка, Подстрока) | позицию первого вхождения или 0, если не найдено |
СтрЗаменить(Строка, Что, НаЧто) | строку, где все вхождения заменены |
ВРег, НРег, ТРег | строку в верхнем, нижнем регистре, с заглавной буквы каждого слова |
СтрЧислоВхождений(Строка, Подстрока) | сколько раз встречается подстрока |
СтрНачинаетсяС(Строка, Начало), СтрЗаканчиваетсяНа(Строка, Конец) | Истина, если строка начинается или заканчивается так |
Позиции в строке считаются с 1, а не с 0, как в массиве: Сред("Карандаш", 1, 1) — «К».
Разбить и соединить
&НаКлиенте
Процедура Пример(Команда)
Части = СтрРазделить("ручка;тетрадь;линейка", ";");
Сообщить(Части.Количество());
Сообщить(Части[1]);
Сообщить(СтрСоединить(Части, ", "));
КонецПроцедуры3
тетрадь
ручка, тетрадь, линейкаСтрРазделить возвращает массив частей, СтрСоединить собирает массив строк в одну строку через разделитель.
Шаблон и перенос строки
&НаКлиенте
Процедура Пример(Команда)
Сообщить(СтрШаблон("Товар %1, количество %2", "Ручка", 5));
Сообщить("Первая строка" + Символы.ПС + "Вторая строка");
КонецПроцедурыТовар Ручка, количество 5
Первая строка
Вторая строкаСтрШаблон подставляет значения вместо %1, %2 и так далее. Символы.ПС — перенос строки, Символы.Таб — табуляция.
Подводные камни
- Версия платформы.
СтрНайти,СтрРазделить,СтрСоединить,СтрШаблон,СтрНачинаетсяСиСтрЗаканчиваетсяНапоявились в платформе 8.3.6. В старом коде вместоСтрНайтивстречаетсяНайти(Строка, Подстрока)— она работает так же. - Число в строке при склейке получает пробелы между разрядами:
"Код " + 1000даёт «Код 1 000». ИспользуйтеФормат(Число, "ЧГ=0"). - Сравнение строк знаком
=учитывает регистр букв. Чтобы сравнить без учёта регистра, приведите обе строки к одному регистру:ВРег(А) = ВРег(Б), или используйтеСтрСравнить(А, Б) = 0(тоже с 8.3.6). - Кавычка внутри строки пишется двумя кавычками:
"Фирма ""Луч""".