4D v16.3

Position

Home

 
4D v16.3
Position

Position 


 

Position ( find ; aString {; start {; lengthFound}}{; *} ) -> Function result 
Parameter Type   Description
find  String in String to find
aString  String in String in which to search
start  Longint in Position in string where search will start
lengthFound  Longint in Length of string found
Operator in If passed: evaluation based on character codes
Function result  Longint in Position of first occurrence

Position returns the position of the first occurrence of find in aString.

If aString does not contain find, it returns a zero (0).

If Position locates an occurrence of find, it returns the position of the first character of the occurrence in aString.

If you ask for the position of an empty string within an empty string, Position returns zero (0).

By default, the search begins at the first character of aString. The optional start parameter can be used to specify the character where the search will begin in aString.

The lengthFound parameter, if passed, returns the length of the string actually found by the search. This parameter is necessary to be able to correctly manage letters that can be written using one or more characters (e.g.: æ and ae, ß and ss, etc.).
Note that when the * parameter is passed (see below), these letters are not considered as equivalent (æ # ae); in this mode, lengthFound is always equal to the length of find (if an occurrence is found).

By default, the command makes global comparisons that take linguistic particularities and letters that may be written with one or more characters (for example æ = ae) into account. On the other hand, it is not diacritical (a=A, a=à and so on) and does not take "ignorable" characters into account (Unicode specification). Ignorable characters include all characters in unicode C0 Control subset (U+0000 to U+001F, ascii character control set) except printable ones (U+0009 TAB, U+0010 LF, U+0011 VT, U+0012 FF and U+0013 CR).
To modify this functioning, pass the asterisk * as the last parameter. In this case, comparisons will be based on character codes. You must pass the * parameter:

  • If you want to take special characters into account, used for example as delimiters (Char(1), etc.),
  • If the evaluation of characters must be case sensitive and take accented characters into account (a#A, a#à and so on).
    Note that in this mode, the evaluation does not handle variations in the way words are written.

Note: In certain cases, using the * parameter can significantly accelerate the execution of the command. 

Warning: You cannot use the @ wildcard character with Position. For example, if you pass "abc@" in find, the command will actually look for "abc@" and not for "abc" plus any character.

This example illustrates the use of Position. The results, described in the comments, are assigned to the variable vlResult.

 vlResult:=Position("ll";"Willow") ` vlResult gets 3
 vlResult:=Position(vtText1;vtText2) ` Returns first occurrence of vtText1 in vtText2
 vlResult:=Position("day";"Today is the first day";1) ` vlResult gets 3
 vlResult:=Position("day";"Today is the first day";4) ` vlResult gets 20
 vlResult:=Position("DAY";"Today is the first day";1;*) ` vlResult gets 0
 
 vlResult:=Position("œ";"Bœuf";1;$length` vlResult =2, $length = 1

In the following example, the lengthFound parameter can be used to search for all the occurrences of "aegis" in a text, regardless of how it is written:

 $start:=1
 Repeat
    vlResult:=Position("aegis";$text;$start;$lengthfound)
    $start:=$start+$lengthfound
 Until(vlResult=0)



See also 

Comparison Operators
Substring

 
PROPERTIES 

Product: 4D
Theme: String
Number: 15

This command can be run in preemptive processes

 
HISTORY 

Modified: 4D v11 SQL

 
ARTICLE USAGE

4D Language Reference ( 4D v16)
4D Language Reference ( 4D v16.1)
4D Language Reference ( 4D v16.2)
4D Language Reference ( 4D v16.3)