Finds the last position of a target string in a source string.


LastPos ( string1, string2 {, searchlength } )




The string in which you want to find string2.


The string you want to find in string1.

searchlength (optional)

A long that limits the search to the leftmost searchlength characters of the source string string1. The default is the entire string.

Return value


Returns a long whose value is the starting position of the last occurrence of string2 in string1 within the characters specified in searchlength. If string2 is not found in string1 or if searchlength is 0, LastPos returns 0. If any argument's value is null, LastPos returns null.


The LastPos function is case sensitive. The entire target string must be found in the source string.


This statement returns 6, because the position of the last occurrence of RU is position 6:

LastPos("BABE RUTH", "RU")

This statement returns 3:

LastPos("BABE RUTH", "B")

This statement returns 0, because the case does not match:

LastPos("BABE RUTH", "be") 

This statement searches the leftmost 4 characters and returns 0, because the only occurrence of RU is after position 4. The search length must be at least 7 (to include the complete string RU) before the statement returns 6 for the starting position of the last occurrence of RU:

LastPos("BABE RUTH", "RU", 4)

These statements change the text in the SingleLineEdit sle_group. The last instance of the text NY is changed to North East:

long place_nbr
place_nbr = LastPos(sle_group.Text, "NY")
sle_group.SelectText(place_nbr, 2 )
sle_group.ReplaceText("North East")

These statements separate the return value of GetBandAtPointer into the band name and row number. The LastPos function finds the position of the (last) tab in the string and the Left and Mid functions extract the information to the left and right of the tab:

string s, ls_left, ls_right
integer li_tab
s = dw_groups.GetBandAtPointer()
li_tab = LastPos(s, "~t")
ls_left = Left(s, li_tab - 1)
ls_right = Mid(s, li_tab + 1)

These statements tokenize a source string backwards:

// Tokenize the source string backwards
// Results in "pbsyc.dll  powerbuilder  
// shared  appeon  programs  c:

string  sSource = &
  'c:\program files\Appeon\Common\PowerBuilder\Runtime\pbsyc.dll'
string  sFind   = '\'
string  sToken
long  llStart, llEnd

llEnd = Len(sSource) + 1

DO   llStart = LastPos(sSource, sFind, llEnd)
   sToken = Mid(sSource, (llStart + 1), &
      (llEnd - llStart))
   mle_comment.text += sToken + '  '
   llEnd = llStart - 1
LOOP WHILE llStart > 1

See also