'From Squeak3.8alpha of ''17 July 2004'' [latest update: #6273] on 30 September 2004 at 1:17:55 pm'! "Change Set: AsIntegerFix-st Date: 30 September 2004 Author: Samuel Tardieu Fix asInteger so that it works with negative numbers."! !String methodsFor: 'converting' stamp: 'st 9/30/2004 13:05'! asInteger "Answer the Integer created by interpreting the receiver as the string representation of an integer. Answer nil if no digits, else find the first digit and then all consecutive digits after that" | startPosition tail endPosition abs | startPosition := self findFirst: [:ch | ch isDigit]. startPosition == 0 ifTrue: [^ nil]. tail := self copyFrom: startPosition to: self size. endPosition := tail findFirst: [:ch | ch isDigit not]. endPosition == 0 ifTrue: [endPosition := tail size + 1]. abs := Number readFromString: (tail copyFrom: 1 to: endPosition - 1). (startPosition > 1 and: [(self at: startPosition - 1) = $-]) ifTrue: [^ abs negated] ifFalse: [^ abs]. " '1796exportFixes-tkMX' asInteger '1848recentLogFile-sw' asInteger 'donald' asInteger 'abc234def567' asInteger '-94' asInteger "! ! !StringTest methodsFor: 'testing - converting' stamp: 'st 9/30/2004 13:12'! testAsInteger self assert: '1796exportFixes-tkMX' asInteger = 1796. self assert: 'donald' asInteger isNil. self assert: 'abc234def567' asInteger = 234. self assert: '-94' asInteger = -94. self assert: 'foo-bar-92' asInteger = -92! !