'From etoys2.1 of 26 July 2007 [latest update: #1516] on 29 July 2007 at 2:18:05 am'! "Change Set: lastOccurrenceFix-sw Date: 29 July 2007 Author: Scott Wallace Fixes a bug in String>>findLastOccuranceOfString: startingAt:, and corrects the spelling of the selector to be #findLastOccurrenceOfString:startingAt: Ref: Mantis Bug 0006579: String>>#findLastOccuranceOfString:startingAt: gives wrong result when substring first=substring last."! !String methodsFor: 'accessing' stamp: 'sw 7/29/2007 01:20'! findLastOccuranceOfString: subString startingAt: start "Answer the index of the last occurance of subString within the receiver, starting at start. If the receiver does not contain subString, answer 0." ^ self findLastOccurrenceOfString: subString startingAt: start ! ! !String methodsFor: 'accessing' stamp: 'sw 7/28/2007 20:53'! findLastOccurrenceOfString: subString startingAt: start "Answer the index of the last occurrence of subString within the receiver, starting at start. If the receiver does not contain subString, answer 0. Case-sensitive match used." | last now | last _ self findSubstring: subString in: self startingAt: start matchTable: CaseSensitiveOrder. last = 0 ifTrue: [^ 0]. [last > 0] whileTrue: [now _ last. last _ self findSubstring: subString in: self startingAt: last + 1 matchTable: CaseSensitiveOrder]. ^ now " 'ababa' findLastOccurrenceOfString: 'aba' startingAt: 1 'ababababa' findLastOccurrenceOfString: 'aba' startingAt:3 'aaa' findLastOccurrenceOfString: 'aa' startingAt: 1 " ! !