Работа с CHARACTER
Когда вы определяете переменную как тип CHARACTER, её значением по умолчанию является пустая строка символов (“”). Вы можете инициализировать переменную, чтобы установить начальное значение. В ABL вы можете изменить значение переменной CHARACTER при условии, что результат не превышает 32К символов.
VAR CHAR cURLString. VAR CHAR cWarehouseName = "Bldg A".
ABL предоставляет множество операторов и функций для работы со строками. Все они могут использоваться с данными CHARACTER, и большинство из них также могут использоваться с данными LONGCHAR.
Строковые функции и операторы |
Описание |
+ Оператор конкатенации | Соединяет две строки символов или выражения. |
Функция ASC | Преобразует символьное выражение, представляющее один символ, в соответствующее значение ASCII (или внутренней кодовой страницы), возвращаемое как INTEGER. |
Функция BEGINS | Возвращает true, если строка начинается с шаблона. |
Функция CAPS | Возвращает версию строки в верхнем регистре. |
Функция CHR | Преобразует целочисленное значение в соответствующее символьное значение. |
Функция COMPARE | Сравнивает две строки, используя указанный оператор сравнения или функцию. |
Функция FILL | Создает строку, состоящую из строки символов, которая повторяется заданное количество раз. |
Функция INDEX | Ищет в строке подстроку и, если она найдена, возвращает расположение подстроки. |
Функция LC | Возвращает строчную версию строки. |
Функция LEFT-TRIM | Удаляет символы из начала строки, включая начальные пробелы. |
Функция LENGTH | Возвращает длину строки. |
Оператор MATCHES | Выполняет сопоставление с подстановочными знаками для строки в другой строке. По умолчанию MATCHES не чувствителен к регистру. |
Оператор OVERLAY | Вставляет содержимое из указанного выражения в поле или переменную, заменяя существующие символы, байты или столбцы. |
Функция R-INDEX | Возвращает целочисленное значение, указывающее положение целевой строки в исходной строке. В отличие от функции INDEX, R-INDEX выполняет поиск справа налево. |
Функция REPLACE | Возвращает строку с указанными заменами подстроки. Тип данных возвращаемого значения соответствует типу данных выражения, переданного в функцию. |
Функция RIGHT-TRIM | Удаляет символы с конца строки, включая завершающие пробелы. |
Функция STRING | Преобразует значение другого типа данных в символьное значение. |
Функция SUBSTITUTE | Возвращает строку символов, состоящую из базовой строки и подстановки аргументов в строке. |
Функция SUBSTRING | Возвращает подстроку строки на основе местоположений, указанных в строке. |
Функция TRIM | Удаляет символы из начала или конца строки, включая начальные или конечные пробелы. |
Дополнительные сведения см. в разделе ABL string manipulation functions.
В следующих разделах обсуждается, как использовать оператор конкатенации (+) и функции SUBSTITUTE, REPLACE и STRING. Они обычно используются для манипуляций со строками. Для получения дополнительной информации о других перечисленных функциях перейдите по соответствующей ссылке в таблице.
Оператор конкатенации (+)
Вы можете комбинировать строки символов, объединяя их. Конкатенация означает последовательное объединение двух или более строк. Например, строка «PRO», объединённая со строкой «GRESS», становится «PROGRESS».
Используете оператор конкатенации для объединения двух или более строк:
string1 + string2 + string3
Если вы хотите, чтобы между строковыми значениями появлялись пробелы или знаки препинания, вы должны указать их явно. Например, чтобы отобразить полное имя человека, вы можете написать следующий код:
VAR CHAR fullName. VAR CHAR firstName = "Alexander". VAR CHAR middleInitial = "T". VAR CHAR lastName = "Great". fullName = firstName + " " + middleInitial + ". " + lastName. MESSAGE "My name is: " fullName.
Выполнение кода приводит к следующему выводу:
My name is: Alexander T. Great
Функция SUBSTITUTE
Функция SUBSTITUTE возвращает строку символов, состоящую из базовой строки и подстановки значений параметров в строке. Эта функция позволяет использовать одну строку вместо объединённых строк.
new-string = SUBSTITUTE( base-string [ , arg ] ... )
new-string
Строка, возвращаемая функцией SUBSTITUTE.
base-string
Строка символов, необязательно содержащая параметры подстановки в форме , где n — целое число от 1 до 9 включительно.
arg
Константа, имя поля, переменная или выражение, результатом которого является значение строки символов. Эти значения заменяют параметры подстановки в базовой строке .
В следующем примере кода используется замена, а не конкатенация, но результат аналогичен предыдущему примеру. В этом примере firstName заменяет &1; middleInitial заменяет &2; и lastName заменяет &3.
VAR CHAR newString. VAR CHAR firstName = "Alexander". VAR CHAR middleInitial = "T". VAR CHAR lastName = "Great". newString = SUBSTITUTE("My name is: &1 &2. &3", firstName, middleInitial, lastName). MESSAGE newString.
Функция REPLACE
Вы можете использовать функцию REPLACE для замены символов в переменной выражением.
Синтаксис функции REPLACE:
new-string = REPLACE(source-string, from-string, to-string)
new-string
Строка, возвращаемая функцией REPLACE.
Source-string
Указывает базовую строку для замены. Параметр исходной строки может быть любым выражением, результатом которого является строка. Функция REPLACE не изменяет значение самой исходной строки , если только новая строка и исходная строка не ссылаются на одну и ту же переменную.
from-string
Указывает подстроку для замены. Параметр from-string может быть любым выражением, результатом которого является строка. Каждое вхождение исходной строки в исходной строке заменяется.
to-string
Указывает замещающую подстроку. Параметр to-string может быть любым выражением, результатом которого является строка. Каждое вхождение from-string в исходную строку заменяется на to-string .
В следующем примере кода создаётся список отделов, разделённых запятыми. Функция REPLACE изменяет разделитель с запятой на черту, окружённую пробелами, для лучшей читабельности.
VAR CHAR cDeptList. FOR EACH Department: cDeptList = cDeptList + "," + DeptName. end. MESSAGE cDeptList VIEW-AS ALERT-BOX. cDeptList = REPLACE(cDeptList, ",", " | "). MESSAGE cDeptList VIEW-AS ALERT-BOX.
Код примера выводит следующий результат:
,Consulting,Administration,Marketing,Sales,Training,Development,Finance,Shipping | Consulting | Administration | Marketing | Sales | Training | Development | Finance | Shipping
Преобразование данных в тип ABL CHARACTER
Функция STRING позволяет преобразовывать не символьные типы данных ABL в символьные значения. Поддерживаются многие типы данных, в том числе:
- INTEGER или INT
- DECIMAL
- LOGICAL
- DATE
- DATETIME
- DATETIME-TZ
Вы можете объединить строку, представляющую различные типы данных, при условии, что вы сначала преобразуете каждый не символьный тип в строку.
Синтаксис функции STRING:
STRING ( value [, "format-string" ] )
value
Переменная, поле или выражение, результатом которого является числовое значение, дата и время или логическое значение.
format-string
Пользовательский формат строки, возвращаемой этой функцией.
Вы можете создать строку сообщения из нескольких значений, некоторые из которых могут не относиться к типам CHARACTER. В следующем примере кода функция STRING используется для преобразования значения DATETIME в строку символов, которая является частью объединённой строки сообщения.
VAR CHAR cTime. VAR CHAR cDateStr. VAR CHAR cTimeStr. cDateStr = "Today's date is " + STRING(TODAY). /* convert the current time to a string */ cTime = STRING(TIME, "hh:mm:ss am"). cTimeStr = "and the time is " + cTime. MESSAGE cDateStr SKIP cTimeStr VIEW-AS ALERT-BOX.
Код примера выводит следующий результат:
Today's date is 05/07/20 and the time is 11:20:10 am