2009-10-21 8 views
4

Est-ce que quelqu'un sait quel est le délimiteur de nouvelle ligne pour une chaîne dans smalltalk? J'essaie de diviser une chaîne en lignes séparées, mais je n'arrive pas à comprendre quel est le caractère de retour à la ligne dans smalltalk.Smalltalk, caractère de nouvelle ligne

ie.

string := 'smalltalk is 
      a lot of fun. 
      ok, it's not.' 

I need to split it in: 
line1: smalltalk is 
line2: a lot of fun. 
line3: ok, it's not. 

je peux diviser une ligne basée sur une lettre ou un symbole, mais je ne peux pas comprendre ce que le delimter de retour à la ligne est. OK, voici comment je divise la chaîne en fonction des virgules, mais je ne peux pas le faire en fonction d'une nouvelle ligne.

Répondre

3

Le délimiteur de saut de ligne est typiquement le retour du chariot, à savoir, Character cr, ou que d'autres ont mentionné, dans une chaîne, String cr. Si vous voulez soutenir tous les formats standards de saut de ligne, il suffit d'inclure les deux délimiteurs standard, par exemple:

string := 'smalltalk is 
a lot of fun.'. 

string findTokens: String cr, String lf. 

Puisque vous mentionnez maintenant que vous utilisez VisualWorks, le ne fonctionnera pas ci-dessus, sauf si vous avez le « squeak-Accès "catégorie chargée (ce que vous n'aurez probablement pas, sauf si vous utilisez Seaside). Vous pouvez utiliser une expression régulière à la place:

'foo 
bar' allRegexMatches: '[^', (String with: Character cr), ']+' 
+0

Je reçois cette erreur: findTokens est un nouveau message: – user69514

+0

Donc, vous pouvez également définir "sep" à (Chaîne avec: Cr caractères) comme ci-dessus. S'il vous plaît mentionner que vous utilisez VW à l'avenir, les dialectes Smalltalk diffèrent considérablement que vous avez découvert. –

+0

Merci beaucoup, je l'apprécie vraiment. Chaîne avec: Le personnage cr a parfaitement fonctionné. Je vais m'assurer de mentionner VW dans le futur. Merci encore. – user69514

0

Comme noté dans this question: Character cr.

+0

J'ai essayé cela plus tôt, mais cela n'a pas fonctionné. Eh bien, en fait, il a continué à fonctionner pour toujours. Je devais le tuer. – user69514

1

Une solution rapide (je ne sais pas si c'est le meilleur) est:

| tableau | tableau: = myString findTokens: String cr

où chaîne cr est le retour chariot caractère

+0

findTokens n'est pas défini. J'utilise des œuvres visuelles, je ne sais pas si ce serait un problème. – user69514

0

Vous pouvez envoyer la chaîne >> withCRs un message alors les délimitent des retours chariot avec barre oblique inverse, thus--

chaîne

: = « Smalltalk est \ beaucoup \ ok, ce n'est pas le cas. withCRs.

+0

(Fonctionne dans VW et couine à la fois) – mystylplx

0

Cela dépend bien sûr du codage. Pourrait être cr, lf ou crlf. Pour Unicode, il y a quelques possibilités supplémentaires. Voir: pharo linesDo:

Questions connexes