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