Глава 8
Обрезка, регистр и разворот
Текст, пришедший из ввода или из файла, часто содержит лишние пробелы по краям, а для сравнения его приходится приводить к одному регистру. Эти задачи решают TRIM, LTRIM, RTRIM, LCASE, UCASE и REVERSE. Все они возвращают новое строковое значение, не изменяя исходную строку, и различаются тем, с какого края и по какому правилу обрабатывается текст.
Выбор преобразования
TRIM, LTRIM и RTRIM удаляют заполнение у краёв строки, LCASE и UCASE меняют регистр, REVERSE меняет порядок кодов Unicode. Каждая функция ниже имеет собственный синтаксис и результат.
TRIM
Функция TRIM возвращает строку после удаления заданных символов с обоих краёв текста. Так убирают лишнее заполнение с обеих сторон, сохраняя содержимое строки. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма 1:
TRIM(<текст>)Форма 2:
TRIM(<текст>, <символы>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
<символы> | Передайте строку типа STRING, перечисляющую удаляемые кодовые единицы UTF-16. Это набор отдельных символов, а не подстрока. Если аргумент отсутствует, удаляются пробельные символы, распознаваемые .NET. |
Возвращаемое значение
Функция возвращает строку типа STRING после обрезки.
Правила и пограничные случаи
Пустой текст остаётся пустым. Пустой набор символов оставляет текст без изменения. Удаление продолжается до первого символа, который не входит в набор; внутри текста символы сохраняются. Форма без набора удаляет также табуляцию и другие пробельные символы, а не только обычный пробел.
Диагностика
Функция не имеет специальной ошибки для пустого текста или пустого набора. Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT "[" + TRIM(" A ") + "]"
PRINT TRIM("--A--", "-")
PRINT "[" + TRIM("") + "]"Программа выводит:
[A]
A
[]LTRIM
Функция LTRIM возвращает строку после удаления заданных символов с начала текста. Так убирают лишнее заполнение с начала строки, сохраняя её содержимое. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма 1:
LTRIM(<текст>)Форма 2:
LTRIM(<текст>, <символы>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
<символы> | Передайте строку типа STRING, перечисляющую удаляемые кодовые единицы UTF-16. Это набор отдельных символов, а не подстрока. Если аргумент отсутствует, удаляются пробельные символы, распознаваемые .NET. |
Возвращаемое значение
Функция возвращает строку типа STRING после обрезки.
Правила и пограничные случаи
Пустой текст остаётся пустым. Пустой набор символов оставляет текст без изменения. Удаление продолжается до первого символа, который не входит в набор; внутри текста символы сохраняются. Форма без набора удаляет также табуляцию и другие пробельные символы, а не только обычный пробел.
Диагностика
Функция не имеет специальной ошибки для пустого текста или пустого набора. Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT "[" + LTRIM(" A ") + "]"
PRINT LTRIM("--A--", "-")Программа выводит:
[A ]
A--RTRIM
Функция RTRIM возвращает строку после удаления заданных символов с конца текста. Так убирают лишнее заполнение с конца строки, сохраняя её содержимое. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма 1:
RTRIM(<текст>)Форма 2:
RTRIM(<текст>, <символы>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
<символы> | Передайте строку типа STRING, перечисляющую удаляемые кодовые единицы UTF-16. Это набор отдельных символов, а не подстрока. Если аргумент отсутствует, удаляются пробельные символы, распознаваемые .NET. |
Возвращаемое значение
Функция возвращает строку типа STRING после обрезки.
Правила и пограничные случаи
Пустой текст остаётся пустым. Пустой набор символов оставляет текст без изменения. Удаление продолжается до первого символа, который не входит в набор; внутри текста символы сохраняются. Форма без набора удаляет также табуляцию и другие пробельные символы, а не только обычный пробел.
Диагностика
Функция не имеет специальной ошибки для пустого текста или пустого набора. Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT "[" + RTRIM(" A ") + "]"
PRINT RTRIM("--A--", "-")Программа выводит:
[ A]
--ALCASE
Функция LCASE возвращает строку, преобразовав буквы в нижний регистр. Она нужна, когда текст требуется представить в одном регистре. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма вызова:
LCASE(<текст>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
Возвращаемое значение
Функция возвращает строку типа STRING.
Правила и пограничные случаи
Преобразование использует неизменяемые правила культуры .NET и не зависит от региональных настроек пользователя. Пустая строка остаётся пустой. Символы без соответствующего регистра сохраняются.
Диагностика
Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT LCASE("ПрИвЕт")
PRINT "["+LCASE("")+"]"Программа выводит:
привет
[]UCASE
Функция UCASE возвращает строку, преобразовав буквы в верхний регистр. Она нужна, когда текст требуется представить в одном регистре. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма вызова:
UCASE(<текст>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
Возвращаемое значение
Функция возвращает строку типа STRING.
Правила и пограничные случаи
Преобразование использует неизменяемые правила культуры .NET и не зависит от региональных настроек пользователя. Пустая строка остаётся пустой. Символы без соответствующего регистра сохраняются.
Диагностика
Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT UCASE("ПрИвЕт")
PRINT "["+UCASE("")+"]"Программа выводит:
ПРИВЕТ
[]REVERSE
Функция REVERSE возвращает строку с обратным порядком кодов Unicode. Она разворачивает последовательность символов, сохраняя целыми корректные суррогатные пары. Вызов выполняется в выражении и не требует открытия экрана, холста или файла; исходные значения аргументов при этом не изменяются.
Синтаксис
Форма вызова:
REVERSE(<текст>)Аргументы
| Аргумент | Что передать |
|---|---|
<текст> | Передайте исходную строку типа STRING, которую функция должна обработать. |
Возвращаемое значение
Функция возвращает строку типа STRING.
Правила и пограничные случаи
Пустая строка остаётся пустой. Корректная суррогатная пара сохраняется целиком. Отдельные знаки ударения и части составных эмодзи меняют порядок независимо: функция не разворачивает строку по графемам. Изолированные кодовые единицы UTF-16 сохраняются без подмены.
Диагностика
Неверные типы и число аргументов отклоняются при проверке программы.
Пример
PRINT REVERSE("А😀Б")
PRINT "["+REVERSE("")+"]"Программа выводит:
Б😀А
[]