How to find the offset of the last instance of a repeating character in a string?

Kay C Lan lan.kc.macmail at
Tue Oct 30 00:54:05 EDT 2018

On Tue, Oct 30, 2018 at 2:33 AM Keith Clarke via use-livecode
<use-livecode at> wrote:
> I’m trying to separate paths & pages from a list of URLs and so looking to identify the position of the last ‘/‘ character.
If that is all you are after then I think setting the itemDelimiter to
"/" and separating the 'item -1' (page) from 'items 1 to -2' (path)
would give you a very simple a readable solution.  The only problem is
if you have the unlikely but not impossible situation where you have
paths that contain no pages.  Because of the known gotcha with LC and
how it counts items when the last item is empty you may need to
include and 'if' statement.

Try this, create a new Stack with a field and a button.

Into the field load the following text:

Into the button load the following script (be careful of line breaks
there are 16 lines of code):

on mouseUp
   put fld 1 into tText
   set the itemDelimiter to "/"
   repeat for each line tLine in tText
      if (char -1 of tLine = "/") then --usual problem with dealing
with empty last items
         put empty into tPath[tLine]
         if (tPath[item 1 to -2 of tLine] = empty) then  --initial entry
            put item -1 of tLine into tPath[item 1 to -2 of tLine]
         else  --multiple entries
            put tPath[item 1 to -2 of tLine] & cr & item -1 of tLine
into tPath[item 1 to -2 of tLine]
         end if
      end if
   end repeat
end mouseUp

There is breakpoint at the end so the script will pause and you can
inspect the variables.  You'll see that an array is created with each
unique path as a key and each page its element.  In the case of 'july'
you will see that four pages are all listed, one per line.

>From there it should open a world of possibilities to arrange, sort
and sift through the paths.


More information about the use-livecode mailing list