X++ string runtime functions
This article describes the string run-time functions.
match
Searches for a string or expression in another string.
int match(str pattern, str text)
Parameters
Parameter | Description |
---|---|
pattern | The string or expression to search for. |
text | The string to search. |
Return value
1 if the pattern is located in the string; otherwise, 0 (zero).
Remarks
The search is case-insensitive. The following special characters can be used to create the pattern for the pattern parameter.
\: A backslash (\) nullifies, or escapes, the special treatment of special characters, so that a special character can be matched like a normal letter. A pair of backslashes is translated into one non-special backslash. Examples:
- match("ab$cd","ab$cd"); returns 0.
- match("ab\$cd","ab$cd"); returns 0. The backslash isn't escaped.
- match("ab\\$cd","ab$cd"); returns 1. The backslash and dollar sign are escaped.
< or ^: A left angle bracket (<) or a circumflex (^) at the start of an expression is used to match the start of a line. Examples:
- match("<abc","abcdef"); returns 1.
- match("<abc","defabc"); returns 0.
- match("^abc","abcdef"); returns 1.
- match("^abc","defabc"); returns 0.
> or $: A right angle bracket (>) or a dollar sign ($) at the end of the expression is used to match the end of a line. Examples:
- match("abc>","abcdef"); returns 0.
- match("abc>","defabc"); returns 1.
? or .: A question mark (?) or a period (.) matches any one character in the same position. Examples:
- match("abc.def","abc#def"); returns 1.
- match("colou?r","colouXr"); returns 1.
:x: A colon (:) specifies a group of characters to match, as indicated by the character that immediately follows.
:a: Sets the match to letters. Examples:
- match("ab:acd","ab#cd"); returns 0.
- match("ab:acd","abxyzcd"); returns 0.
- match("ab:acd","abxcd"); returns 1.
:d: Sets the match to numeric characters. Examples:
- match("ab:dcd","ab3cd"); returns 1.
- match("ab:dcd","ab123cd"); returns 0.
- match("ab:dcd","abcd"); returns 0.
:n: Sets the match to alphanumeric characters. Examples:
- match("ab:ncd","ab%cd"); returns 0.
- match("ab:ncd","ab9cd"); returns 1.
- match("ab:ncd","abXcd"); returns 1.
:SPACE: SPACE is the space character (" "). Sets the match to blanks, tabulations, and control characters such as Enter (new line). Examples:
- match("ab: cd","ab cd"); returns 1.
- match("ab: cd","ab\ncd"); returns 1.
- match("ab: cd","ab\tcd"); returns 1.
- match("ab: cd","ab cd"); returns 0. Only the first space is matched.
*: An expression that is followed by an asterisk ("*") requires a match for zero, one, or more occurrences of the preceding expression. Examples:
- match("abc*d","abd"); returns 1.
- match("abc*d","abcd"); returns 1.
- match("abc*d","abcccd"); returns 1.
- match("abc*d","abxd"); returns 0.
+: An expression that is followed by a plus sign (+) requires a match for one or more occurrences of the preceding expression. Examples:
- match("abc+d","abd"); returns 0.
- match("abc+d","abcd"); returns 1
- match("abc+d","abcccd"); returns 1.
- match("abc+d","abxd"); returns 0.
-: An expression that is followed by a minus sign (-) requires a match for zero or one occurrence of the preceding expression. In other words, the preceding expression is optional. Examples:
- match("colou-r","color"); returns 1.
- match("colou-r","colour"); returns 1.
[]: Matches a single character with any character that is enclosed in the brackets. A range of characters can be specified by two characters that are separated by a minus sign (-). For example, [a-z] matches all letters between a and z, [0-9] matches a digit, and [0-9a-f] matches a hexadecimal digit. Examples:
- match("[abc]","apple"); returns 1, because it matches the a in "apple."
- match("[abc]","kiwi"); returns 0, because "kiwi" doesn't contain an a, b, or c.
- match("gr[ae]y","grey"); returns 1. This expression also matches "gray."
- match("gr[ae]y","graey"); returns 0, because only one character between "gr" and "y" is matched.
[^]: If the first character in the text that is enclosed in brackets is a circumflex (^), the expression matches all characters except the characters that are enclosed in the brackets. Examples:
- match("[^bc]at","bat"); returns 0.
- match("[^bc]at","hat"); returns 1.
- match("[^abc]","bat"); returns 1. Anything except a, b, or c is matched. Therefore, the t is matched.
strAlpha
Copies only the alphanumeric characters from a string.
str strAlpha(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to copy from. |
Return value
A new string that contains all the alphanumeric characters from the specified string.
Remarks
For example, strAlpha("2+2=5 is this correct?") returns the string 225isthiscorrect.
Example
static void strAlphaExample(Args _arg)
{
str s;
;
s = strAlpha("?a*bc123.");
print s;
pause;
}
strCmp
Compares two text strings.
int strCmp(str text1, str text2)
Parameters
Parameter | Description |
---|---|
text1 | The first string. |
text2 | The second string. |
Return value
0 if the two strings are identical, 1 if the first string sorts earlier, or -1 if the second string sorts earlier.
Remarks
The comparison performed by this method is case-sensitive.
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
Converts all uppercase characters to lowercase characters, and converts all characters that have accents to the corresponding unaccented lowercase characters.
str strColSeq(str text)
Parameters
Parameter | Description |
---|---|
text | The string to copy and convert characters from. |
Return value
The converted text string.
Remarks
The strColSeq function exists for backward-compatibility purposes. This function supports only the mapping for the following Western European characters:
- AàáâãäÀÁÂÃÄBCçÇDEèéêëÈÉÊËFGHIìíîïÌÍÎÏJKLMNñÑOòóôõöÒÓÔÕÖPQRSTUùúûüÙÚÛÜVWXYýÝZæøåÆØÅ
- aaaaaaaaaaabcccdeeeeeeeeefghiiiiiiiiijklmnnnooooooooooopqrstuuuuuuuuuvwxyyyz~¦Ç~¦Ç
For Unicode-compliant functionality, use the Win32 LCMapString application programming interface (API) via the DLL and DLLFunc classes.
Example
The following example prints abcdeabcde.
static void strColSeqExample(Args _arg)
{
;
print strColSeq("");
pause;
}
strDel
Creates a copy of a string, from which the specified substring is removed.
str strDel(str _text, int _position, int _number)
Parameters
Parameter | Description |
---|---|
_text | The string to copy from. |
_position | The position at which to begin ignoring characters during the copy operation. |
_number | The number of characters to ignore. A minus sign in front of the _number parameter indicates that _number–1 characters before the character at _position should be removed together with the character at _position. |
Return value
The remaining characters that are copied from the string.
Remarks
The strDel function is complementary to the substr function.
strDel("ABCDEFGH",2,3); //Returns the string "AEFGH".
strDel("ABCDEFGH",4,3); //Returns the string "ABCGH".
strFind
Searches a string for the first occurrence of one of the specified characters.
int strFind(str _text, str _characters, int _position, int _number)
Parameters
Parameter | Description |
---|---|
_text | The string to search. |
_characters | The characters to search for. |
_position | The position in the string where the search begins. |
_number | A signed number that indicates the direction of the search and how many positions to search in the string. |
Return value
The value of the position of the first occurrence of one of the specified characters, or 0 when none found.
Remarks
To search from the beginning of the string to the end, use 1 as the value of the _position parameter. If the value of the _number parameter is negative, the system searches the number of characters backward from the specified position. The search isn't case-sensitive. Here is an example.
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).
The strFind function is complementary to the strNFind function.
strFmt
Formats the specified string and substitutes any occurrences of n with the nth argument.
str strFmt(str _string, ...)
Parameters
Parameter | Description |
---|---|
_string | The strings to format. |
Return value
The formatted string.
Remarks
If an argument isn't provided for a parameter, the parameter will be returned as "%n" in the string. The string conversion of values of the real type is limited to two decimal places. Values are rounded, not truncated. The System.String::Format method from the Microsoft .NET Framework can be used to gain additional functionality, as shown in the example.
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
Builds a string by inserting one string into another.
str strIns(str _text1, str _text2, int _position)
Parameters
Parameter | Description |
---|---|
_text1 | The string to insert the other string into. |
_text2 | The string to insert into the other string. |
_position | The position where the first character of the _text2 parameter should occur in the output string. |
Return value
The combined text string.
Remarks
The strIns function is complementary to the strDel function. If the value of the _position parameter is more than the length of the original string, the string to insert is appended to the end of the original string.
strIns("ABFGH","CDE",3); //Returns the string "ABCDEFGH".
strIns("ABCD","EFGH",10); //Returns the string "ABCDEFGH".
strKeep
Builds a string by using only the characters from the first input string that the second input string specifies should be kept.
str strKeep(str _text1, str _text2)
Parameters
Parameter | Description |
---|---|
_text1 | The string that contains the characters that can be used to build an output string. |
_text2 | The string that specifies which characters to keep for the output string. |
Return value
A string of the characters that are kept.
Remarks
strKeep("ABBCDDEFGHB","BCD"); //Returns the string "BBCDDB".
strKeep("abcZcba","bc") //Returns the string "bccb".
The strKeep function is complementary to the strRem function.
strLen
Calculates the length of the specified string.
int strLen(str text)
Parameters
Parameter | Description |
---|---|
text | The string to calculate the length of. |
Return value
The length of the specified string.
Remarks
strLen("ABC"); //Returns the value 3.
strLen("ABCDEFGHIJ"); //Returns the value 10.
strLine
Retrieves a single line from a string that spans multiple lines.
str strLine(str string, int count)
Parameters
Parameter | Description |
---|---|
string | A string that might span multiple lines. |
count | The offset of the line to return. |
Return value
A copied line of the string that is specified by the string parameter.
Remarks
The first line of the string has an offset of 0. You can assign multiple lines to one string by embedding the \n or \r\n characters in the string. Additionally, you can use the at sign (@) immediately before the opening quotation mark and use the Enter key to spread parts of the string value over multiple lines in the X++ code editor.
Example
str mytxt = "first-line\nsecond-line\nlast-line";
// Prints "second-line".
print strLine(mytxt,1);
// Prints "last-line".
print strLine(mytxt,2);
strLTrim
Removes leading blanks from a text string.
str strLTrim(str text)
Parameters
Parameter | Description |
---|---|
text | The string to delete the leading blanks from. |
Return value
The string equivalent for the text that leading blanks have been removed from.
Remarks
The strLTrim function is complementary to the strRTrim function.
Example
// Returns the text string "ABC-DEFG".
strLTrim(" ABC-DEFG");
strLwr
Converts all letters in the specified string to lowercase.
str strLwr(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to convert to lowercase. |
Return value
A copy of the specified string that contains only lowercase letter.
Remarks
The strLwr function is complementary to the strUpr function. The strLwr function uses the LCMapString function in the Win32 API.
Example
static void strLwrExample(Args _args)
{
// Returns the text string "abcdd55efghij".
print strLwr("Abcdd55EFGHIJ");
pause;
}
strNFind
Searches part of a text string for the first occurrence of a character that isn't included in the specified list of characters.
int strNFind(str _text, str _characters, int _position, int _number)
Parameters
Parameter | Description |
---|---|
_text | The text string to search. |
_characters | The list of characters to exclude from the search. |
_position | The position in the string at which to begin the search. |
_number | A signed number that indicates the direction of the search and how many positions to search. If a minus sign precedes _number, the system searches _number characters in reverse order from _position. |
Return value
The position of the first occurrence of a character that isn't specified by the _characters parameter, or 0 when none found.
Remarks
The search isn't case-sensitive. To search from the beginning of the string to the end, use a value of 1 for the _position parameter. If a minus sign precedes the value of the _number parameter, the characters will be searched in reverse order, starting from the position that is specified by the _position parameter.
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.
The strNFind function is complementary to the strFind function.
strPoke
Overwrites part of a string with another string.
str strPoke(str _text1, str _text2, int _position)
Parameters
Parameter | Description |
---|---|
_text1 | The original string. |
_text2 | The string to replace part of the original string with. |
_position | The position of the original string at which to begin replacing the characters. |
Return value
The new string.
Remarks
The new string can be longer than the original string. However, if the value of the _position parameter is more than the length of the string, the original string is returned without replacements.
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
Appends a string with the specified number of period characters, followed by a colon and space character.
str strPrompt(str _string, _int len)
Parameters
Parameter | Description |
---|---|
_string | The original string. |
_len | The desired final length of the string. |
Return value
A string that looks like a prompt for user input.
Remarks
In atypical cases, where the value of the _len parameter is only slightly more than the length of the original string, the highest precedence is given to adding the trailing space. Next, precedence is given to the colon. The lowest precedence is given to the periods. Negative values for the _len parameter return the input string appended with a trailing space.
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
Removes the characters that are specified in one string from another string.
str strRem(str text1, str text2)
Parameters
Parameter | Description |
---|---|
text1 | The string to remove characters from. |
text2 | The characters to exclude from the output string. |
Return value
The remaining content of the original string.
Remarks
This function is case-sensitive.
strRem("abcd_abcd","Bc"); //Returns the string "abd_abd".
strRem("ABCDEFGABCDEFG","ACEG"); //Returns the string "BDFBDF".
This function is complementary to the strKeep function.
strRep
Repeats a string of characters.
str strRep(str _text, str _number)
Parameters
Parameter | Description |
---|---|
_text | The string to repeat. |
_number | The number of times to repeat the string. |
Return value
A new string that contains the contents of the original string that are repeated the specified number of times.
Example
The following example prints the text string ABABABABABAB.
static void strRepExample(Args _arg)
{
str strL;
;
strL = strRep("AB",6);
print strL;
pause;
}
strRTrim
Removes the trailing space characters from the end of a string.
str strRTrim(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to remove the trailing space characters from . |
Return value
A copy of the specified string that doesn't include trailing space characters.
Remarks
strRTrim("ABC-DEFG- "); //Returns the string "ABC-DEFG-".
strRTrim(" CD "); //Returns " CD".
The strRTrim function is complementary to the strLTrim function.
strScan
Searches a text string for an occurrence of another string.
int strScan(str _text1, str _text2, int _position, int _number)
Parameters
Parameter | Description |
---|---|
_text1 | The string to search in. |
_text2 | The string to find. |
_position | The first position in the _text1 parameter at which to perform a comparison. |
_number | The number of positions in the _text1 parameter to retry the comparison for. If a minus sign precedes the _number parameter, the system searches the number of characters in reverse order from the specified position. |
Return value
The position at which the specified string was found in the string; otherwise, 0 (zero).
Remarks
The comparisons aren't case-sensitive. Values for the _position parameter that are less than 1 are treated as 1. The direction of the scan is controlled by the sign that is specified in the _number parameter. A positive sign indicates that each successive comparison will start one position closer to the end of the string. A negative sign indicates that each comparison will start one position closer to the start of the string.
strScan("ABCDEFGHIJ","DEF",1,10); //Returns the value 4.
strScan ("ABCDEFGHIJ","CDE",10,-10); //Returns the value 3.
strUpr
Converts all the letters in a string to uppercase.
str strUpr(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to convert to uppercase letters. |
Return value
A copy of the specified string that contains only lowercase letters.
Remarks
The strUpr function is complementary to the strLwr function. The strUpr function uses the LCMapString() function in the Win32 API.
Example
The following example will print ABCDD55EFGHIJ.
static void strUprExample(Args _args)
{
print strUpr("Abcdd55EFGhiJ");
pause;
}
subStr
Retrieves part of a string.
str subStr(str _text, int _position, int _number)
Parameters
Parameter | Description |
---|---|
_text | The original string. |
_position | The position in the original string where the part to retrieve begins. |
_number | A signed integer that indicates the direction and number of positions to retrieve from the original string. If a minus sign precedes _number, the system selects the substring backward from the specified position. |
Return value
A substring of the original string.
Remarks
If a minus sign precedes the value of the _number parameter, the substring will be selected backward from the specified position.
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".