how about allOffsets? Bob S
> On Nov 2, 2018, at 09:16 , Geoff Canyon via use-livecode > <use-livecode@lists.runrev.com> wrote: > > All of those return a single value; I wanted to convey the concept of > returning multiple values. To me listOffset implies it does the same thing > as itemOffset, since items come in a list. How about: > > offsets -- not my favorite because it's almost indistinguishable from offset > offsetsOf -- seems a tad clumsy > > On Fri, Nov 2, 2018 at 7:41 AM Bob Sneidar via use-livecode < > use-livecode@lists.runrev.com> wrote: > >> It probably should be named listOffset, like itemOffset or lineOffset. >> >> Bob S >> >> >>> On Nov 1, 2018, at 17:04 , Geoff Canyon via use-livecode < >> use-livecode@lists.runrev.com> wrote: >>> >>> Nice! I *just* finished creating a github repository for it, and adding >>> support for multi-char search strings, much as you did. I was coming to >> the >>> list to post the update when I saw your post. >>> >>> Here's the GitHub link: https://github.com/gcanyon/offsetlist >>> >>> Here's my updated version: >>> >>> function offsetList D,S,pCase >>> -- returns a comma-delimited list of the offsets of D in S >>> set the caseSensitive to pCase is true >>> set the itemDel to D >>> put length(D) into dLength >>> put 1 - dLength into C >>> repeat for each item i in S >>> add length(i) + dLength to C >>> put C,"" after R >>> end repeat >>> set the itemDel to comma >>> if char -dLength to -1 of S is D then return char 1 to -2 of R >>> put length(C) + 1 into lenC >>> put length(R) into lenR >>> if lenC = lenR then return 0 >>> return char 1 to lenR - lenC - 1 of R >>> end offsetList >>> >>> On Thu, Nov 1, 2018 at 8:28 AM Niggemann, Bernd via use-livecode < >>> use-livecode@lists.runrev.com> wrote: >>> >>>> Hi Geoff, >>>> >>>> thank you for this beautiful script. >>>> >>>> I modified it a bit to accept multi-character search string and also for >>>> case sensitivity. >>>> >>>> It definitely is a lot faster for unicode text than anything I have >> seen. >>>> >>>> ----------------------------- >>>> function offsetList D,S, pCase >>>> -- returns a comma-delimited list of the offsets of D in S >>>> -- pCase is a boolean for caseSensitive >>>> set the caseSensitive to pCase >>>> set the itemDel to D >>>> put the length of D into tDelimLength >>>> repeat for each item i in S >>>> add length(i) + tDelimLength to C >>>> put C - (tDelimLength - 1),"" after R >>>> end repeat >>>> set the itemDel to comma >>>> if char -1 of S is D then return char 1 to -2 of R >>>> put length(C) + 1 into lenC >>>> put length(R) into lenR >>>> if lenC = lenR then return 0 >>>> return char 1 to lenR - lenC - 1 of R >>>> end offsetList >>>> ------------------------------ >>>> >>>> Kind regards >>>> Bernd >>>> >>>> >>>> >>>> >>>> >>>>> >>>>> Date: Thu, 1 Nov 2018 00:15:37 -0700 >>>>> From: Geoff Canyon >>>>> To: How to use LiveCode <use-livecode@lists.runrev.com> >>>>> Subject: Re: How to find the offset of the last instance of a >>>>> repeating character in a string? >>>>> >>>>> I was curious if using the itemDelimiter might work for this, so I >> wrote >>>>> the below code out of curiosity; but in my quick testing with >> single-byte >>>>> characters it was only about 30% faster than the above methods, so I >>>> didn't >>>>> bother to post it. >>>>> >>>>> But Ben Rubinstein just posted about a terrible slow-down doing pretty >>>> much >>>>> this same thing for text with unicode characters. So I ran a simple >> test >>>>> with 8000 character long strings that start with a single unicode >>>>> character, this is about 15x faster than offset() with skip. For >>>>> 100,000-character lines it's about 300x faster, so it seems to be >> immune >>>> to >>>>> the line-painter issues skip is subject to. So for what it's worth: >>>>> >>>>> function offsetList D,S >>>>> -- returns a comma-delimited list of the offsets of D in S >>>>> set the itemDel to D >>>>> repeat for each item i in S >>>>> add length(i) + 1 to C >>>>> put C,"" after R >>>>> end repeat >>>>> set the itemDel to comma >>>>> if char -1 of S is D then return char 1 to -2 of R >>>>> put length(C) + 1 into lenC >>>>> put length(R) into lenR >>>>> if lenC = lenR then return 0 >>>>> return char 1 to lenR - lenC - 1 of R >>>>> end offsetList >>>>> >>>> >>>> >>>> _______________________________________________ >>>> use-livecode mailing list >>>> use-livecode@lists.runrev.com >>>> Please visit this url to subscribe, unsubscribe and manage your >>>> subscription preferences: >>>> http://lists.runrev.com/mailman/listinfo/use-livecode >>>> >>> _______________________________________________ >>> use-livecode mailing list >>> use-livecode@lists.runrev.com >>> Please visit this url to subscribe, unsubscribe and manage your >> subscription preferences: >>> http://lists.runrev.com/mailman/listinfo/use-livecode >> >> >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your >> subscription preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode >> > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode