STRSUBSTNO Function (Code, Text)
Replaces %1, %2, %3... and #1, #2, #3... fields in a string with the values you provide as optional parameters.
NewString := STRSUBSTNO(String [,Value1, …])
Type: Text constant or Code
A string containing '#' and/or '%' fields.
The % fields are replaced by the values with their full lengths, and # fields are replaced by the values that are truncated to the length of the # field.
If this parameter is an expression that evaluates to Text or Code that is 512 or more characters, then a run-time error occurs.
One or more values (expressions) that you want to insert into String. You can specify up to 10 values.
Property Value/Return Value
Type: Text constant or Code
The resulting string, after the corresponding values have been substituted into the '#' and '%' fields.
This function replaces the numbered specifiers in a string with a string representation of the equivalent numbered value.
The specifiers in the string can be either %n or #######n, where n represents a 1-based number. When you use the # specifier, the number can be anywhere in the specifier. For example, ###2#### is allowed.
The %n specifier is replaced with the string representation of the value with their full lengths.
The ##n specifier is replaced with the same number of characters as the length of the specifier (including the number). The values are truncated to the length of the # field.
If the string representation is shorter than the length of the specifier, then it is left aligned.
StrSubstNo('Test %1 >#2##< >#3<', 1,2,3) returns "Test 1 >2 < >3 <".
In this example, the following substitutions are made:
%1 is replaced by '1' because a % field is replaced by the specified value in its full length.
'#2##' is replaced by '2 space space space' because the value is shorter than the field and therefore, the 2 is left aligned and the field is four characters long.
#3 is replaced by '3 space' because the 3 is left aligned and the field is two characters long
If the string is longer, then asterisks are inserted to indicate overflow.
StrSubstNo('Test %1 >###2< >#3<', 'Thomas','Thomas',0)returns "Test Thomas >****< >0 <".
In this example the following substitutions are made:
%1 is replaced by 'Thomas' because a %1 field is replaced by the specified value in its full length.
'###2' is replaced by '****' because the string 'Thomas' is longer than the ###2 field. Each character in the field is replaced by an asterisk.
#3 is replaced by '0 space' because the 0 is left aligned and the field is two characters long.
You can have several references to the same value.
StrSubstNo('Test %1 %3 %1', 555, 666, 777)returns "Test 555 777 555".
If one of the values is null, then it is treated as an empty string.
For more information about the STRSUBSTNO function in a multilanguage-enabled application, see Developing Multilanguage-Enabled Applications.
The following example shows how to use the STRSUBSTNO function.
This example requires that you create the following variables and text constants in the C/AL Globals window.
|Variable name||Data type||Length|
|Text constant||ENU value|
|Text000||The balance of account %1 is $ %2|
|Text001||The string before STRSUBSTNO has been called:\%1|
|Text002||The string after STRSUBSTNO has been called:\%1|
Str := Text000; AccountNo := 3452; Balance := 2345 + 5462; MESSAGE(Text001, Str); Str := STRSUBSTNO(Str, AccountNo, Balance); MESSAGE(Text002, Str);
The first message window displays the following text:
The string before STRSUBSTNO has been called:
The balance of account %1 is $ %2
The second message window displays the following text:
The string after STRSUBSTNO has been called:
The balance of account 3452 is $ 7,807
This example is run on a computer that has the regional format set to English (United States).