【FlowScript講座】第8回 String


[管理者]
KHCmaster
今回はString 文字列に関するデータの扱い方について学びます。

今までの講座で何回も登場してきたConsole.WriteConsole.WriteLine
のTextプロパティが実はStringのデータ型になります。

Stringのデータ型に繋ぐデータ型をほとんど考慮する必要はなく、Int32, Floatなど自由に繋げます。

明示的にStringのデータ型の値を作成するには、例によってString.Valueを使います。

String.ValueとString型の文字列の加算、つまり文字列の結合を行うString.Addを使って簡単な動作を見てみましょう。

以下がそのスクリプトです。(Add.fsml)


実行すると、「俺の名前を言ってみろ」と出力されますね。
結合順序を意識する必要はありますが、他のデータ型の加算と同じような感じでできます。


Stringのデータ型で存在を知っておくべきノードはString.Formatです。

これは引数にStringのデータ型と前回学んだArrayListのデータ型をとります。
簡単なサンプルが以下になります。(Fotmat.fsml)


動作の仕方として、まず3つの要素からなるArrayListを受け取ります。
[俺の, 名前を, 言ってみろ]

さらにFormatの文字列に{n}と書くと、ArrayListのn番目の要素で差し替えることになります。

つまり、このサンプルでは{0}{1}{2}とつながっているだけなので、

(ArrayListの0番目)(ArrayListの1番目)(ArrayListの2番目)

の文字列が作成、表示され、さきほどのAdd.fsmlサンプルと同じ動作をする別のスクリプトを書いたことになります。
今回は要素数が少ないですが、多くなるとString.AddよりもString.Formatを使ったほうが簡潔に短く書けることが多いです。

さらに、String.Formatの受け取るArrayListの中身はString型に限りません。

以下のサンプルを見てください。(Format2.fsml)


ArrayListには一つのFloat型のデータを入れています。

それを{0:F1} {0:F2} {0:F3} {0:F4} {0:F5} {0:F6}のフォーマットで出力すると
0.1 0.12 0.123 0.1235 0.12346 0.123457
のようになります。

まず{ }の数と出力されている数字の数はともに6個なので{n}と書けば、n番目の要素で置き換わるっぽいことが分かります。
ところが、肝心の出力内容は異なります。
いかにも :Fd (dは整数) となっている部分が怪しいですが、これは小数表記で小数点第d位までの文字列にしてください、
という意味になります。

つまり、

(ArrayListの0番目の要素を小数第1位までの文字列)
(ArrayListの0番目の要素を小数第2位までの文字列)
(ArrayListの0番目の要素を小数第3位までの文字列)
(ArrayListの0番目の要素を小数第4位までの文字列)
(ArrayListの0番目の要素を小数第5位までの文字列)
(ArrayListの0番目の要素を小数第6位までの文字列)

という文字列を作成、表示するというサンプルになります。
Math.Roundを使っても同じことができますが、ノードを使わずして簡単に文字列のフォーマットを行えるのが
String.Formatの利点になります。
:(コロン)なんとか、でできる特殊フォーマットは他にもあって:Xとかやると16進数だったり

http://msdn.microsoft.com/ja-jp/library/dwhawy9k%28v=vs.95%29.aspx

ここに詳しいフォーマット書式については書かれているので詳しく知りたい方は参照してください。


今回のまとめですが

String.ValueでStringのデータを作成
String.AddでStringの結合
String.Formatで書式を指定して文字列を作成できる

となっています。
今回の講座に関する質問はこのスレッドで受け付けています。
次回はHashtableについて行う予定です。
作成日時:2013-08-24 11:44:24 更新日時:2013-08-24 11:49:43
FlowScript講座をフォーラムを使って開講中です。