2015-03-24 13:53 GMT+01:00 Noury Bouraqadi <bouraqadi@gmail.com>:
Hi,

The normal behavior
'abc' howManyMatch: 'abd' --> 2.

I got suprized the way Blanks and new lines are handled.

'\**' withCRs howManyMatch: '\\**' withCRs. --> 2 instead of 1

'ab\ **' withCRs howManyMatch: 'ab\\**' withCRs. --> 4 instead of 3

'\ **' withCRs howManyMatch: '\\**' withCRs. --> 3 instead of 1

'ab\ **' withCRs howManyMatch: 'ab\\**' withCRs. --> 5 instead of 3

The behavior is the same in both Pharo 3 and Pharo 4.

Reading the code of does not help me understand why it's this way

String>>howManyMatch: string
�� �� �� �� "Count the number of characters that match up in self and aString."
�� �� �� �� | count shorterLength |

�� �� �� �� count := 0.
�� �� �� �� shorterLength := self size min: string size.
�� �� �� �� 1 to: shorterLength do: [:index |
�� �� �� �� �� �� �� �� (self at: index) = (string at: index )
�� �� �� �� �� �� �� �� �� �� �� �� ifTrue: [ count := count + 1 ]].
�� �� �� �� ^�� count


Noury

Noury,
I think you're looking after the number of common chars only at beginning.
Wouldn't the method finder hit a better match?

The method works as advertised in the comment. Though I find it very questionnable:
Doesn't "match" imply some other semantic like pattern matching (and thus things like wild character etc...)?
Is such specific behavior usefull? Really? Why/Where?
��

Afin de contribuer au respect de l'environnement,
merci de n'imprimer ce courriel qu'en cas de necessite

Please consider the environment before you print