Поделиться через


Строковые функции времени выполнения X++

Замечание

Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму " Запрос доступа к финансам и операциям Viva Engage Community " и выберите сообщество, к которому вы хотите присоединиться.

В этой статье описываются строковые функции времени выполнения.

спичка

Выполняет поиск строки или выражения в другой строке.

int match(str pattern, str text)

Параметры

Параметр Description
pattern Строка или выражение для поиска.
текст Строка для поиска.

Возвращаемое значение

1 , если шаблон находится в строке; в противном случае — 0 (ноль).

Замечания

Поиск не учитывает регистр. Следующие специальные символы можно использовать для создания шаблона для параметра шаблона .

  • \: обратная косая черта (\) null уведомляет или экранирует, специальное лечение специальных символов, чтобы специальный символ можно было сопоставить как обычную букву. Пара обратной косой черты преобразуется в одну неспециальную обратную косую черту. Примеры.

    • match("ab$cd","ab$cd"); возвращает значение 0.
    • match("ab\$cd","ab$cd"); возвращает значение 0. Обратная косая черта не экранирована.
    • match("ab\\$cd","ab$cd"); возвращает значение 1. Обратная косая черта и знак доллара экранируются.
  • < или ^: левая угловая скобка (<) или обрезание (^) в начале выражения используется для сопоставления начала строки. Примеры.

    • match("<abc","abcdef"); возвращает значение 1.
    • match("<abc","defabc"); возвращает значение 0.
    • match("^abc","abcdef"); возвращает значение 1.
    • match("^abc","defabc"); возвращает значение 0.
  • > или $: прямоугольная скобка (>) или знак доллара ($) в конце выражения используется для сопоставления конца строки. Примеры.

    • match("abc>","abcdef"); возвращает значение 0.
    • match("abc>","defabc"); возвращает значение 1.
  • ? или.: вопросительный знак (?) или точка (.) совпадает с любым символом в той же позиции. Примеры.

    • match("abc.def","abc#def"); возвращает значение 1.
    • match("colou?r","colouXr"); возвращает значение 1.
  • :x: двоеточие (:) указывает группу символов для сопоставления, как указано символом, который сразу же следует.

  • :a. Задает соответствие буквам. Примеры.

    • match("ab:acd","ab#cd"); возвращает значение 0.
    • match("ab:acd","abxyzcd"); возвращает значение 0.
    • match("ab:acd","abxcd"); возвращает значение 1.
  • :d. Задает соответствие числовым символам. Примеры.

    • match("ab:dcd","ab3cd"); возвращает значение 1.
    • match("ab:dcd","ab123cd"); возвращает значение 0.
    • match("ab:dcd","abcd"); возвращает значение 0.
  • :n: задает соответствие буквенно-цифровым символам. Примеры.

    • match("ab:ncd","ab%cd"); возвращает значение 0.
    • match("ab:ncd","ab9cd"); возвращает значение 1.
    • match("ab:ncd","abXcd"); возвращает значение 1.
  • :SPACE: ПРОБЕЛ — это символ пробела (" "). Задает совпадение пустым, табуляциям и контрольным символам, таким как ВВОД (новая строка). Примеры.

    • match("ab: cd","ab cd"); возвращает значение 1.
    • match("ab: cd","ab\ncd"); возвращает значение 1.
    • match("ab: cd","ab\tcd"); возвращает значение 1.
    • match("ab: cd","ab cd"); возвращает значение 0. Совпадает только первое пространство.
  • *: выражение, за которым следует звездочка ("*") требуется совпадение для нуля, одного или нескольких вхождения предыдущего выражения. Примеры.

    • match("abc*d","abd"); возвращает значение 1.
    • match("abc*d","abcd"); возвращает значение 1.
    • match("abc*d","abcccd"); возвращает значение 1.
    • match("abc*d","abxd"); возвращает значение 0.
  • +: выражение, за которым следует знак плюса (+) требуется совпадение для одного или нескольких вхождений предыдущего выражения. Примеры.

    • match("abc+d","abd"); возвращает значение 0.
    • match("abc+d","abcd"); возвращает 1
    • match("abc+d","abcccd"); возвращает значение 1.
    • match("abc+d","abxd"); возвращает значение 0.
  • -: выражение, за которым следует знак минуса (-) требуется совпадение для нуля или одного вхождения предыдущего выражения. Другими словами, предыдущее выражение является необязательным. Примеры.

    • match("colou-r","color"); возвращает значение 1.
    • match("colou-r","цвет"); возвращает значение 1.
  • []: соответствует одному символу с любым символом, заключенным в квадратные скобки. Диапазон символов можно указать двумя символами, разделенными знаком минус (-). Например, [a-z] соответствует всем буквам между a и z, [0-9] соответствует цифре, а [0-9a-f] соответствует шестнадцатеричной цифре. Примеры.

    • match("[abc]","apple"); возвращает значение 1, так как оно соответствует "apple".
    • match("[abc]","kiwi"); возвращает значение 0, так как "kiwi" не содержит a, b или c.
    • match("gr[ae]y", "серый"); возвращает значение 1. Это выражение также соответствует "серым".
    • match("gr[ae]y","graey"); возвращает значение 0, так как сопоставляется только один символ между "gr" и "y".
  • [^]: если первый символ текста, заключенного в квадратные скобки, является обрезанием (^), выражение соответствует всем символам, кроме символов, заключенных в квадратные скобки. Примеры.

    • match("^bc]at","bat"); возвращает значение 0.
    • match("^bc]at","hat"); возвращает значение 1.
    • match("[^abc]","bat"); возвращает значение 1. Все, кроме b или c, совпадает. Таким образом, совпадает значение t.

strAlpha

Копирует только буквенно-цифровые символы из строки.

str strAlpha(str _text)

Параметры

Параметр Description
_СМС Строка для копирования.

Возвращаемое значение

Новая строка, содержащая все буквенно-цифровые символы из указанной строки.

Замечания

Например, strAlpha("2+2=5 это правильно?") возвращает строку 225isthiscorrect.

Example

static void strAlphaExample(Args _arg)
{
    str s;
    ;
    s = strAlpha("?a*bc123.");
    print s;
    pause;
}

strCmp

Сравнивает две текстовые строки.

int strCmp(str text1, str text2)

Параметры

Параметр Description
text1 Первая строка.
text2 Вторая строка.

Возвращаемое значение

Значение 0 , если две строки идентичны, 1 , если первая строка сортируется ранее или -1 , если вторая строка сортируется ранее.

Замечания

Сравнение, выполняемое этим методом, учитывает регистр.

print strCmp("abc", "abc"); //Returns the value 0.
print strCmp("abc", "ABC"); //Returns the value 1.
print strCmp("aaa", "bbb"); //Returns the value -1.
print strCmp("ccc", "bbb"); //Returns the value 1.

strColSeq

Преобразует все прописные символы в строчные символы и преобразует все символы, имеющие акценты, в соответствующие несметные строчные символы.

str strColSeq(str text)

Параметры

Параметр Description
текст Строка для копирования и преобразования символов из.

Возвращаемое значение

Преобразованная текстовая строка.

Замечания

Функция strColSeq существует в целях обратной совместимости. Эта функция поддерживает только сопоставление следующих символов Западной Европы:

  • AàáãäÀÁÁÁÁÁÄÄBCçÇDEèéêèÉÊÉFGHIFGHIíÍÍÍÍÍYKLMNÑOóôõÓÓÔÓÔÕÖPQRQRSTUúÚÚÚVÜVYYyýZöÖÖÅÅÅ
  • aaabcccdeeefghiiiiiiijknnnooooopqruuwwyyyz~~Ç~~~ÇÇ

Для функциональных возможностей, совместимых с Юникодом, используйте интерфейс программирования приложений Win32 LCMapString (API) через классы DLL и DLLFunc .

Example

В следующем примере выводится abcdeabcde.

    static void strColSeqExample(Args _arg)
    {
            ;
            print strColSeq("");
            pause;
    }

strDel

Создает копию строки, из которой удаляется указанная подстрока.

str strDel(str _text, int _position, int _number)

Параметры

Параметр Description
_СМС Строка для копирования.
_позиция Позиция, с которой начинается игнорировать символы во время операции копирования.
_число Количество символов, которые следует игнорировать. Знак минуса перед параметром _number указывает, что _number–1 символов перед символом в _position следует удалить вместе с символом в _position.

Возвращаемое значение

Оставшиеся символы, скопированные из строки.

Замечания

Функция strDel дополняет функцию подстроки .

strDel("ABCDEFGH",2,3); //Returns the string "AEFGH".
strDel("ABCDEFGH",4,3); //Returns the string "ABCGH".

strFind

Выполняет поиск строки для первого вхождения одного из указанных символов.

int strFind(str _text, str _characters, int _position, int _number)

Параметры

Параметр Description
_СМС Строка для поиска.
_письмена Символы для поиска.
_позиция Позиция в строке, в которой начинается поиск.
_число Подписанный номер, указывающий направление поиска и количество позиций для поиска в строке.

Возвращаемое значение

Значение позиции первого вхождения одного из указанных символов или 0, если ни один из них не найден.

Замечания

Чтобы выполнить поиск с начала строки до конца, используйте 1 в качестве значения параметра _position . Если значение параметра _number отрицательное, система выполняет поиск числа символов назад от указанной позиции. При поиске регистр не учитывается. Вот пример.

strFind("ABCDEFGHIJ","KHD",1,10); //Returns the value 4 (the position where "D" was found).
strFind("ABCDEFGHIJ","KHD",10,-10); //Returns the value 8 (the position where "H" was found).

Функция strFind дополняет функцию strNFind .

strFmt

Форматирует указанную строку и заменяет любые вхождения n аргументом n.

str strFmt(str _string, ...)

Параметры

Параметр Description
_струна Строки для форматирования.

Возвращаемое значение

Отформатированная строка.

Замечания

Если аргумент не указан для параметра, параметр возвращает значение "%n" в строке. Строковое преобразование значений реального типа ограничено двумя десятичными разрядами. Значения округляются, не усечены. Метод System.String::Format из Microsoft .NET Framework можно использовать для получения дополнительных функций, как показано в примере.

Example

static void strFmtExampleJob(Args _arg)
{
    System.Double sysDouble;
    real r = 8.3456789;
    int  i = 42;
    utcDateTime utc = str2DateTime("2008-01-16 13:44:55" ,321); // 321 == YMD.
    str  s;
    ;
    s = strFmt("real = %1, int = %2, utcDateTime = %3, [%4]", r, i, utc);
    info("X1:  " + s);
    //
    sysDouble = r;
    s = System.String::Format("{0:##.####}", sysDouble);
    info("N1:  " + s);
    //
    s = System.String::Format("{0,6:C}", sysDouble); // $
    info("N2:  " + s);
    /**********  Actual Infolog output
    Message (02:16:05 pm)
    X1:  real = 8.35, int = 42, utcDateTime = 1/16/2008 01:44:55 pm, [%4]
    N1:  8.3457
    N2:   $8.35
    **********/
}

strIns

Создает строку, вставляя одну строку в другую.

str strIns(str _text1, str _text2, int _position)

Параметры

Параметр Description
_text1 Строка, вставляемая в другую строку.
_text2 Строка для вставки в другую строку.
_позиция Позиция, в которой должен находиться первый символ параметра _text2 в выходной строке.

Возвращаемое значение

Объединенная текстовая строка.

Замечания

Функция strIns дополняет функцию strDel . Если значение параметра _position превышает длину исходной строки, строка для вставки добавляется в конец исходной строки.

strIns("ABFGH","CDE",3); //Returns the string "ABCDEFGH".
strIns("ABCD","EFGH",10); //Returns the string "ABCDEFGH".

strKeep

Создает строку, используя только символы из первой входной строки, которую следует сохранить второй входной строке.

str strKeep(str _text1, str _text2)

Параметры

Параметр Description
_text1 Строка, содержащая символы, которые можно использовать для создания выходной строки.
_text2 Строка, указывающая, какие символы следует хранить для выходной строки.

Возвращаемое значение

Строка хранимых символов.

Замечания

strKeep("ABBCDDEFGHB","BCD"); //Returns the string "BBCDDB".
strKeep("abcZcba","bc") //Returns the string "bccb".

Функция strKeep дополняет функцию strRem .

strLen

Вычисляет длину указанной строки.

int strLen(str text)

Параметры

Параметр Description
текст Строка для вычисления длины.

Возвращаемое значение

Длина указанной строки.

Замечания

strLen("ABC"); //Returns the value 3.
strLen("ABCDEFGHIJ"); //Returns the value 10.

strLine

Извлекает одну строку из строки, которая охватывает несколько строк.

str strLine(str string, int count)

Параметры

Параметр Description
струна Строка, которая может охватывать несколько строк.
count Смещение возвращаемой строки.

Возвращаемое значение

Скопированная строка строки строки, указанной параметром строки .

Замечания

Первая строка строки имеет смещение 0. Можно назначить несколько строк одной строке, встроив в строку\n или \r\n символы. Кроме того, вы можете использовать знак at (@) непосредственно перед открытием кавычки и использовать клавишу ВВОД для распространения частей строкового значения по нескольким строкам в редакторе кода X++.

Example

str mytxt = "first-line\nsecond-line\nlast-line";
// Prints "second-line".
print strLine(mytxt,1);
// Prints "last-line".
print strLine(mytxt,2);            

strLTrim

Удаляет пробелы в начале из текстовой строки.

str strLTrim(str text)

Параметры

Параметр Description
текст Строка для удаления ведущих пустых значений из.

Возвращаемое значение

Строка, эквивалентная тексту, из который были удалены ведущие пустоты.

Замечания

Функция strLTrim дополняет функцию strRTrim .

Example

// Returns the text string "ABC-DEFG".
strLTrim("   ABC-DEFG");

strLwr

Преобразует все буквы в указанной строке в строчные буквы.

str strLwr(str _text)

Параметры

Параметр Description
_СМС Строка для преобразования в нижний регистр.

Возвращаемое значение

Копия указанной строки, содержащей только строчные буквы.

Замечания

Функция strLwr дополняет функцию strUpr . Функция strLwr использует функцию LCMapString в API Win32.

Example

static void strLwrExample(Args _args)
{
    // Returns the text string "abcdd55efghij".
    print strLwr("Abcdd55EFGHIJ");
    pause;
}

strNFind

Выполняет поиск части текстовой строки для первого вхождения символа, который не включен в указанный список символов.

int strNFind(str _text, str _characters, int _position, int _number)

Параметры

Параметр Description
_СМС Текстовая строка для поиска.
_письмена Список символов, которые следует исключить из поиска.
_позиция Позиция в строке, с которой начинается поиск.
_число Подписанный номер, указывающий направление поиска и количество позиций для поиска. Если знак минуса предшествует _number, система выполняет поиск _number символов в обратном порядке от _position.

Возвращаемое значение

Позиция первого вхождения символа, который не указан параметром _characters, или значение 0 при обнаружении.

Замечания

При поиске регистр не учитывается. Чтобы выполнить поиск с начала строки до конца, используйте значение 1 для параметра _position . Если знак минуса предшествует значению параметра _number , символы выполняются в обратном порядке, начиная с позиции, указанной параметром _position .

strNFind("ABCDEFGHIJ","ABCDHIJ",1,10); //Returns the value 5 (the position of "E");
strNFind("CDEFGHIJ","CDEFGIJ",10,-10); //Returns the value 6 (the position of "H").
strNFind("abcdef","abCdef",3,2) //Returns the value 0.
strNFind("abcdef", "abcef",3,2) //Returns the value 4.

Функция strNFind дополняет функцию strFind .

strPoke

Перезаписывает часть строки другой строкой.

str strPoke(str _text1, str _text2, int _position)

Параметры

Параметр Description
_text1 Исходная строка.
_text2 Строка для замены части исходной строки.
_позиция Позиция исходной строки, с которой начинается замена символов.

Возвращаемое значение

Новая строка.

Замечания

Новая строка может быть длиннее исходной строки. Однако если значение параметра _position больше длины строки, исходная строка возвращается без замены.

strPoke("12345678","AAA",3); //Returns the string "12AAA678".
strPoke("abcde","4567",4); //Returns the string "abc4567".
strPoke("abcde", "4567", "10"); //Returns the string "abcde".

strPrompt

Добавляет строку с указанным числом символов периода, за которым следует двоеточие и пробел.

str strPrompt(str _string, _int len)

Параметры

Параметр Description
_струна Исходная строка.
_Лен Требуемая окончательная длина строки.

Возвращаемое значение

Строка, которая выглядит как запрос ввода пользователем.

Замечания

В нетипичных случаях, когда значение параметра _len лишь немного больше длины исходной строки, то самое большое значение присваивается добавлению конечного пространства. Далее приоритет присваивается двоеточию. Наименьший приоритет присваивается периодам. Отрицательные значения для параметра _len возвращают входную строку, добавленную с конечным пробелом.

strPrompt("ab",-1); //Returns "ab ".
strPrompt("ab",3); //Returns "ab ".
strPrompt("ab",4); //Returns "ab: ".
strPrompt("ab",5); //Returns "ab.: ".
strPrompt("ab",6); //Returns "ab..: ".

Example

static void JobStrPromptDemo(Args _args)
{
    // Printed string is "[abc..: ]"
    print "[", strPrompt("abc", 7), "]";
    pause;
}

strRem

Удаляет символы, указанные в одной строке из другой строки.

str strRem(str text1, str text2)

Параметры

Параметр Description
text1 Строка для удаления символов.
text2 Символы, которые следует исключить из выходной строки.

Возвращаемое значение

Оставшееся содержимое исходной строки.

Замечания

Эта функция чувствительна к регистру.

strRem("abcd_abcd","Bc"); //Returns the string "abd_abd".
strRem("ABCDEFGABCDEFG","ACEG"); //Returns the string "BDFBDF".

Эта функция дополняет функцию strKeep .

strRep

Повторяет строку символов.

str strRep(str _text, str _number)

Параметры

Параметр Description
_СМС Строка, которая будет повторяться.
_число Число повторов строки.

Возвращаемое значение

Новая строка, содержащая содержимое исходной строки, которая повторяет указанное количество раз.

Example

В следующем примере выводится текстовая строка ABABABABABABB.

static void strRepExample(Args _arg)
{
    str strL;
    ;
    strL = strRep("AB",6);
    print strL;
    pause;
}

strRTrim

Удаляет конечные пробелы из конца строки.

str strRTrim(str _text)

Параметры

Параметр Description
_СМС Строка для удаления конечных пробелов из.

Возвращаемое значение

Копия указанной строки, которая не содержит конечные пробелы.

Замечания

strRTrim("ABC-DEFG- "); //Returns the string "ABC-DEFG-".
strRTrim(" CD "); //Returns " CD".

Функция strRTrim дополняет функцию strLTrim .

strScan

Выполняет поиск текстовой строки для вхождения другой строки.

int strScan(str _text1, str _text2, int _position, int _number)

Параметры

Параметр Description
_text1 Строка для поиска.
_text2 Строка для поиска.
_позиция Первая позиция в параметре _text1 , по которому выполняется сравнение.
_число Количество позиций в параметре _text1 для повторения сравнения. Если знак минуса предшествует параметру _number , система выполняет поиск количества символов в обратном порядке из указанной позиции.

Возвращаемое значение

Позиция, в которой указанная строка была найдена в строке; в противном случае — 0 (ноль).

Замечания

Сравнения не учитывает регистр. Значения параметра _position , которые меньше 1 , обрабатываются как 1. Направление сканирования управляется знаком, указанным в параметре _number . Положительный знак указывает, что каждое последовательное сравнение начинает одну позицию ближе к концу строки. Отрицательный знак указывает, что каждое сравнение начинает одну позицию ближе к началу строки.

strScan("ABCDEFGHIJ","DEF",1,10); //Returns the value 4.
strScan ("ABCDEFGHIJ","CDE",10,-10); //Returns the value 3.

strUpr

Преобразует все буквы в строку в верхний регистр.

str strUpr(str _text)

Параметры

Параметр Description
_СМС Строка для преобразования в прописные буквы.

Возвращаемое значение

Копия указанной строки, содержащей только строчные буквы.

Замечания

Функция strUpr дополняет функцию strLwr . Функция strUpr использует функцию LCMapString() в API Win32.

Example

В следующем примере выполняется печать ABCDD55EFGHIJ.

static void strUprExample(Args _args)
{
    print strUpr("Abcdd55EFGhiJ");
    pause;
}

subStr

Извлекает часть строки.

str subStr(str _text, int _position, int _number)

Параметры

Параметр Description
_СМС Исходная строка.
_позиция Позиция в исходной строке, в которой начинается извлекаемая часть.
_число Целое число со знаком, указывающее направление и количество позиций, извлекаемых из исходной строки. Если знак минуса предшествует _number, система выбирает подстроку назад из указанной позиции.

Возвращаемое значение

Подстрока исходной строки.

Замечания

Если знак минуса предшествует значению параметра _number , подстрока выбирается назад из указанной позиции.

subStr("ABCDEFGHIJ",3,5); //Returns the string "CDEFG".
subStr("ABCDEFGHIJ",7,-4); //Returns the string "DEFG".
subStr("abcdef",2,99) //Returns the string "bcdef".
subStr("abcdef",2,3) //Returns the string "bcd".
subStr("abcdef",2,-3); //Returns the string "ab".

strContains

Проверяет, содержит ли текстовая строка другую строку.

boolean strContains(str _text, str _potentialContains)

Параметры

Параметр Description
_СМС Исходная строка для поиска.
_potentialContains Строка для поиска.

Возвращаемое значение

Значение True, если исходная строка содержит поисковую строку; в противном случае значение false.

Замечания

Сравнения не учитывает регистр.

strContains("ABCDEFGHIJ","abc"); //Returns true.
strContains("ABCDEFGHIJ","ABC"); //Returns true.
strContains("ABCDEFGHIJ","K"); //Returns false.

strStartsWith

Проверяет, начинается ли текстовая строка с другой строки.

boolean strStartsWith(str _string, str _potentialStart)

Параметры

Параметр Description
_струна Исходная строка для поиска.
_potentialStart Потенциальная строка, которая находится в начале.

Возвращаемое значение

Значение true, если потенциальная строка является началом исходной строки; в противном случае значение false.

Замечания

Сравнения не учитывает регистр.

strStartsWith("ABCDEFGHIJ","abc"); //Returns true.
strStartsWith("ABCDEFGHIJ","ABC"); //Returns true.
strStartsWith("ABCDEFGHIJ","B"); //Returns false.

strEndsWith

Проверяет, заканчивается ли текстовая строка другой строкой.

boolean strEndsWith(str _string, str _potentialEnd)

Параметры

Параметр Description
_струна Исходная строка для поиска.
_potentialEnd Потенциальная строка, которая находится в конце.

Возвращаемое значение

Значение True, если потенциальная строка завершает исходную строку; в противном случае значение false.

Замечания

Сравнения не учитывает регистр.

strEndsWith("ABCDEFGHIJ","ghij"); //Returns true.
strEndsWith("ABCDEFGHIJ","HIJ"); //Returns true.
strEndsWith("ABCDEFGHIJ","B"); //Returns false.

strLRTrim

Удаляет пробелы в начале и хвосте из текстовой строки.

str strLRTrim(str text)

Параметры

Параметр Description
текст Строка для удаления ведущих и хвостовых пустых значений.

Возвращаемое значение

Копия указанной строки, которая не включает начальные и конечные пробелы.

Замечания

Функция strLRTrim дополняет функции strRTrim и strLTrim .

Example

// Returns the text string "ABC-DEFG".
strLRTrim("   ABC-DEFG   ");