AREA 021
Featuring AlphaScript

STEP 9 文字列

 

文字列は、文字の列のことです。(説明になってない(笑))  文字列を表すには、「'」(シングルクオーテーション)で囲めば OK です。

AlphaScript で文字列を管理する仕組みは、配列と似ています。(というか、実体は同じです)  要するに、1文字が1つの変数に対応するのです。  したがって、単一の変数に文字列を代入、というわけにはいきません。  文字列を格納するには、少なくともその文字数分の要素を持つ配列が必要です。  次の例では、少し(かなり?)多めに確保しています。

$ hensuu[30], hensuu2[30];

hensuu @ 'MojiRetsu';
hensuu2 @ 'MojiRetsu2';

文字列を代入する処理は、普通の = ではNGです。  1文字ずつ要素を代入するので、@ 演算子を使います。  そして、実際に格納される値は各文字の「文字コード」なのですが、これはあまり意識しなくてOKです。  並んだ箱の中に文字が1つずつ入っているイメージで良いです。

「'」で囲まれた間では、スペースも文字列の内容として認識されますし、日本語も使用できます。  また、途中で改行するとエラーになるので注意!

上記の記述を使わず、文字コードを1文字ずつ数値で書いても結果は同じです。  ただ、それだと文字コードと文字の対応を常に覚えておかなければならないので、超非現実的です。(笑)  しかも、スクリプトが文字コードに依存してしまう、というおまけも付いてきます。

でも、何らかの理由で文字列中に特定の文字を含めたくないことがあるかもしれません。 (文字列を閉じずに ' という文字を含めたい場合など)

これについては、文字コードを直接指定することで解決できます。

// ABC という文字列を代入( A と C の文字コードはそれぞれ 65 と 67 )
str @ 65, 'B', 67;

ちなみに、各文字の文字コードは、以下のようなスクリプトで簡単に調べられます。

$c;

// 調べたい文字
c = 'A';

print( ( c, ' = ', [c] ) );

exit: 0;


文字列の連結

文字列も配列なので、 ( 'abc', 'def' ) のように連結できます。  ' ' の中では改行できませんが、下のようにすれば、複数行に分けて書くこともできます。

str @
'ABCDE',
'FGHIJ',
'KLMNO';


無効な文字コードについて

AlphaScript で使用される文字コードは Unicode (ユニコード)になっています。 ( Unicode は全ての文字を2バイトの数値で表す標準的な文字コードです。 詳しいことは検索してみてください)  文字コードは 0 〜 66535 までありますが、AlphaScript の数値はもっと範囲の大きい実数ですし、 この範囲の外はもちろん、範囲の中でも文字として使用できない番号が存在します。  このように有効な文字コードとして認識できない値は、無効な文字として扱われます。

文字列を出力(画面に描画するなど)する際、文字列中に無効な文字が含まれていた場合、その文字は無視されます。  したがって、全てが無効な文字で構成される文字列(例えば、全ての要素が 0 )は、何も出力されないことになります。


数値を文字列化

式を [ ] で囲むと、その数値を文字列に置き換えてくれます。 ( [ ] って、いろんな役割がありますねぇ...)  例えば、以下のように記述すると、次のような文字列になります。

score = 200;
( 'SCORE = ', [score] )

// 結果: score = 200

上記のように連結せず、単体でも使えます。

中に配列が指定された場合、対象となった数値を1つずつ , で区切って連結した文字列になります。  これは、配列の内容を調べるのに便利です。

この機能は数値を出力したいときには便利(いや、もし無かったら大変)ですが、 必要になる文字数は求めてみないとわからないので、配列に代入するときは注意してください。  どんな値になるかわからないときは、ひとつの数値あたり 20 文字ほど確保しておけば安全です。 

ただし、整数しか扱わないときは 15 文字程度でも充分です。  あまり数の大きすぎる値は E で表すようにしていますので、この場合はわずか 1 文字です。(笑)  また、小数点以下の値がない場合は、整数として変換するようになっています。  逆に、小数点以下の細かすぎる値は無視されます。

$ ary[15];

ary @ [ someHensuu ];

なお、次に解説する関数を使えば、逆に文字列を数値に変換することもできます。

文字列は配列として扱われますので、その自体の値は先頭の文字の文字コードとなります。  ですから、X = 'abc' と書けば X は文字 a の文字コードになります。  このことを利用し、X == 'a' と書いて「 X が文字 a なのかを判定する」といった使い方が可能です。 (中身が1文字でも文字列は文字列ですので)

 

ページ一覧に戻る  次のステップへ!

Copyright (c) Rabit 2005-2012 all rights reserved.