2016-04-04 2 views
4

Je veux diviser une chaîne en Pharo 4. Mon entrée estfindTokens: dans Pharo contre Dolphin Smalltalk

'a %% b %% c %%% d %% e %% f' 

et je veux

#('a %% b %% c' 'd %% e %% f') 

ainsi le séparateur est %%% '

En Dolphin 7 il fonctionne bien:

'a %% b %% c %%% d %% e %% f' subStrings: ' %%% ' 
#('a %% b %% c' 'd %% e %% f') 

Mais Pharo 4 semble être rompu:

'a %% b %% c %%% d %% e %% f' subStrings: ' %%% ' 
"#('a' 'b' 'c' 'd' 'e' 'f')" 

Il est un moyen d'obtenir le comportement des dauphins dans Pharo?

+0

Avez-vous envisagé une approche plus simple comme ' 'a %% b %% c %%% d %% e %% f' readStream upToAll: '%%%' '? –

+0

Oui mais cela ne fonctionnerait pas avec une séquence plus longue '' a %% b %% c %%% d %% e %% f %% %% h %% i 'readStream upToAll:' %%% ' – user1000565

+0

Bien sûr, mon code était juste un indice. Vous auriez besoin de collecter les résultats de 'upToAll:' dans un [stream atEnd] whileFalse: [résultat add: (stream upToAll: '%%%%')] 'façon. –

Répondre

3

Essayez

'a %% b %% c %%% d %% e %% f' splitOn: ' %%% ' 

Il travaille également avec

'a %% b %% c %%% d %% e %% f %%% g %% h %% i' splitOn: ' %%% ' 
+1

Il peut également fonctionner avec: '' %%% 'split:' a %% b %% c %%% d %% e %% f '' –