インデックス置き場はこちら
前回はこちら
●もじもじしちゃお!〜2010年Stringの旅1〜
Arrayに関しては大体終わったような気がするのでとっとと次に行くことにする。配列よりは色々なシーンで使うことになりそうな文字列についてだ。
文字列をマスターすると出来ることの幅が広がる。というか文字列くらい使えないと出来ることがかなり制限されてしまう。なにせ、画面上に表示するダイナミックテキストはまんま文字列だし、traceで表示されるモノもやっぱり文字列。実はデータとしてもっとも効率のいい形式も文字列で、まだやってないけどSharedObjectとかで配列の内容を保存しておく場合、数値のままだと要素一つに8バイトくらい使ってしまうが、文字列を使って圧縮してしまえば効率よくデータを格納でき、結果としてより多くのデータが保存できるようにもなる。
基礎的な部分から応用的な部分まで幅広い分野でこき使われる形式、それが文字列、すなわちStringオブジェクトだ。
では、Stringオブジェクトを使うにはどうすればいいのか。Hello worldという内容のStringオブジェクトを作成する方法を伝授しよう。
str = "Hello World";
なんだよただの代入じゃん。そうだよただの代入だよ。この辺はもう既にさんざんやってきたことだから極めておさらいだな。
あー。でもちょっと待った。ここで一つせっかくなので、まったく同じ結果になる式をもう一つ。それはこれだ。
str = 'Hello World';
なんだよまったく同じじゃん。待ってよまったく同じじゃないよ。よーく見てもらえば分かるが、文字列を囲っているモノが違う。上はダブルクォーテーション、下はシングルクォーテーション。そう、どちらで囲っても文字列として扱われるわけだ。これらは一見まったく同じ動作をするようでいて、実はとても大きな違いがある。それは何か。なんと、シングルクォーテーションで囲むと、文字列の中にそのままダブルクォーテーションを書き込むことが出来てしまうのだ!
str='It called "Hiyoko".';
でもシングルクォーテーションとして使われているアポストロフィを文字列中に埋め込めなくなってしまう両刃の剣。素人にはお勧めできない。
str='You'er hiyoko';//エラーになる
英文を扱う時はどう考えてもダブルクォーテーションを使った方がいいな。
さらについで。一つの文字列に、ダブルクォーテーションとシングルクォーテーションを文字列に混在させたい時もあるだろう。例えば『Don't call me "Hiyoko"!』という文章を文字列に入れたいとする。しかし、シングルクォーテーションで囲おうとすると、アポストロフィで文字列が終わったことになりエラーが出る。ダブルクォーテーションで囲っても、文中のダブルクォーテーションで文字列が終わってしまう。どうすべきか。
解決法は一つではない。シンプルな方法には、こんなのがある。
str="Don't call me "+'"Hiyoko"!';
str="Don't call me \"Hiyoko\"!"
上の例ではアポストロフィを含む部分をシングルクォーテーションで囲い、ダブルクォーテーションを含む部分をシングルクォーテーションで囲んで、+で繋いでいる。まだ+で繋ぐって言うのやってないけど。
下の例では、エスケープシーケンスと言う物を使っている。日本のパソコンでは円マークとして表示されている半角文字、欧米ではバックスラッシュになっているこの文字をダブル列びにシングルクォーテーションの直前に噛ましてやることで、そのダブル・シングルのクォーテーションは毒性を失い文字列を終了させることが出来なくなり、抵抗無く文字列に組み込めるようになる。この辺の話はまたいずれすることになるだろう。
なんか初っぱなから脱線してて前置きが終わってない気がする。でも気にしちゃダメだ。

0