StartsWith and IsStartOf (String functions)
Is the method object string an initial substring of the argument string? (String class) [introduced in Sirius Mods 7.9 βeta]
Syntax
%boolean = string:IsStartOf( longerString, MinLength= number)
Syntax terms
%boolean | The Boolean result of IsStartOf is True if:
|
---|---|
string | A string which is examined to see if it is an abbreviation (i.e., an initial substring) of longerString. |
longerString | A string which is examined to see if the method object string is an abbreviation of it. |
MinLength | A non-negative number, specifying the minimum length of the method object string to be considered an abbreviation of longerString. |
Examples
Determining if option is valid abbreviation
A common task is checking user input for a valid abbreviation for one of several longer terms. This is one motivation for the MinLength argument; there may be overlap in the initial substrings of the longer terms. Consider the following fragment:
%opt = %(system):arguments:toUpper if %opt:isStartOf('MAXAMOUNT', 5) then ... elseIf %opt:isStartOf('MAXTIME', 5) then ... else PrintText Invalid argument: {%opt}
If the argument to this proc is max
, that would not distinguish it between maxAmount
and maxTime
; hence the MinLength argument value of 5 is used to enforce that at least maxAm
or maxTi
is entered (a value of 4 would also have disambiguated the abbreviations in this case).
Several single-line examples
The following fragment:
PrintText {~= 'a':IsStartOf('abc', 1) } PrintText {~= 'a':IsStartOf('abc', 2) } PrintText {~= 'a':IsStartOf('abc', 0) } PrintText {~= 'x':IsStartOf('abc', 1) } PrintText {~= 'x':IsStartOf('abc', 0) } PrintText {~= :IsStartOf('abc', 0) }
produces the following output:
'a':IsStartOf('abc', 1) = True 'a':IsStartOf('abc', 2) = False 'a':IsStartOf('abc', 0) = True 'x':IsStartOf('abc', 1) = False 'x':IsStartOf('abc', 0) = False