4

smalltalkの文字列の改行区切り文字を知っている人はいますか?

文字列を別々の行に分割しようとしていますが、smalltalkの改行文字が何であるかわかりません。

すなわち。

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.

任意の文字または記号に基づいて行を分割できますが、改行デリマーが何であるかがわかりません。

これがカンマに基づいて文字列を分割する方法ですが、改行に基づいて分割することはできません。

4

5 に答える 5

5

改行区切り文字は通常、キャリッジ リターン、つまり 、Character crまたは他の人が述べたように、文字列内のString crです。すべての標準改行フォーマットをサポートしたい場合は、両方の標準区切り文字を含めるだけです。次に例を示します。

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

string findTokens: String cr, String lf.

VisualWorks を使用しているとのことなので、「squeak-accessing」カテゴリが読み込まれていない限り、上記は機能しません (Seaside を使用していない限り、おそらく機能しません)。代わりに正規表現の一致を使用できます。

'foo
bar' allRegexMatches: '[^', (String with: Character cr), ']+'
于 2009-10-21T02:11:38.593 に答える
1

簡単な解決策(それが良いかどうかはわかりません)は次のとおりです。

|配列 | 配列:= mystring findTokens: 文字列 cr

String cr はキャリッジ リターン文字です。

于 2009-10-21T01:49:28.220 に答える
0

この質問で述べたように: Character cr.

于 2009-10-21T01:46:50.187 に答える
0

String>>withCRs メッセージを送信してから、キャリッジ リターンをバックスラッシュで区切ることができます。

string := 'smalltalk は\とても楽しいです.\ OK, そうではありません.' CR付き。

于 2009-10-23T10:37:55.307 に答える
0

もちろん、エンコーディングに依存します。cr、lf、または crlf の可能性があります。ユニコードの場合、さらにいくつかの可能性があります。参照: pharo 行Do:

于 2009-11-11T16:51:22.397 に答える