2 つの文字列の間にタブを挿入するのに問題があります。
stringOne := 'Name'.
stringTwo := 'Address'.
私はもう試した:
info := stringOne, String tab, stringTwo.
また
info := stringOne, Character tab asString, stringTwo.
しかし、これら 2 つのメッセージのいずれも理解されていません。ビジュアルワークスを使用しています。
Goog は、タブを含む文字列を作成する方法を提供しました
String with: Tab
VisualWorks では Tab が認識されず、Tab を置き換える必要があることを自分で発見しました。
Character tab
これら2つのものをワークスペースにまとめて評価し、タブ文字を含む文字列が得られることを確認します
String with: Character tab
次に、それを連結で使用します
info := stringOne, (String with: Character tab), stringTwo.
(多くの連結を行う場合は、WriteStream
notを使用してください,
)
マクロ展開を使用する最短:
info := '<1s><T><2s>' expandMacrosWith: one with: two
確認する Visual Works はありませんが、IBM Smalltalk ではTab
(大文字と小文字に注意してください) はタブ文字です。
多分これを試してください:
info := stringOne, Tab asString, stringTwo.
編集(re:あなたのコメント):
わかりTab
ました。タブ文字の正しい名前ではないか、文字クラスが応答しませんasString
。Tab class
「文字」と答えた場合は、文字を文字列に変更する方法を見つける必要があるだけです。ビジュアルワークスで。「文字」と答えない場合は、VisualWorks でタブ文字の正しい名前が見つかりませんでした。
編集2:
Visual Worksで文字を文字列に変換する簡単な方法がわからないので、とにかくうまくいくはずの解決策があります. asString
とにかくこれがすべてです。
おそらく複数回使用したいので、文字列として保存できます。
tabString := String with: Tab.
info := stringOne, tabString, stringTwo
WriteStream ベースのソリューション (もう少し冗長ですが、適切にスケーリングされ、do:separatedBy のようにループで使用できます)
ws := (String new:50) writeStream.
ws
nextPutAll: stringOne;
tab;
nextPutAll: stringTwo.
info := ws contents.
または、ワンライナーコードが本当に好きなら:
info := (String new writeStream) nextPutAll: stringOne; tab; nextPutAll: stringTwo; contents.