目次

3-6 Stringクラスで文字列を扱う

Arduinoで文字列を扱いたい場合は、char型の変数以外にもStringクラスを使うことができます。
Stringを使うことで、char型変数よりも文字列を便利に扱うことができます。
  

Stringの使い方

基本の使い方その1:文字列を格納する

String str1 = "ラッキーえのき";

Stringは変数の型ではない“クラス”ですが、基本的な使い方は変数と同じです。
上記のコードでは、str1の中に「ラッキーえのき」という文字列が格納されています。
Serial.println(str1); を使うことで中身を表示できるのも同じです。
  

基本の使い方その2:文字列を連結する

String str1 = "ラッキーえのき";
String str2 = "大繁殖";
String str3 = str1 + str2;

1行目のstr1には「ラッキーえのき」、2行目のstr2には「大繁殖」の文字列が入っています。
3行目ではこの2つの文字列を連結させて、str3の中に格納しています。
Serial.println(str3); でstr3の中身を見ると「ラッキーえのき大繁殖」が表示されます。
  

便利な使い方その1:文字列を切り出す

Stringクラスは多くの便利な関数を備えています。
これらの関数を使いこなすことで、文字列を自在に扱うことができます。
とはいえ、この「便利な使い方」はちょっと難しい内容を含むので、初学者の方はいま無理に覚える必要はありません。
いつか文字列をあれこれしたくなった時に、「そういやそんな手もあったっけ」と思い出してくれればOKです。


String str1 = "abcdefg";
str1 = str1.substring(4);

このstr1を Serial.println(str1); すると、「efg」が表示されます。

解説します。
1行目でstr1の中に「abcdefg」の文字列を入れました。
2行目に出てきたのは、substring関数です。

substring関数の書き方は String.substring(from,to) です。
まず先頭のStringには、既に宣言されていて中身の入っているStringの名前を書きます。
今回はstr1の中の文字列を切り出しにかけたいので、str1が書いてあります。
( )内のfromには、切り出したい文字が文字列全体の何文字目にあるかの数字を入れます。
文字列の先頭は0として数えます。今回だとaは0文字目なのでfromの4はeにあたります。
toは省略可能です。今回は省略しているので文字列の末尾までを切り出します。
逆に指定した場合は、toの数字の文字数(数え方はfromと同じ)の手前の文字までで切り出します。
例えば(4, 6)と指定した場合は、「ef」が切り出されます。
  

便利な使い方その2:文字列の長さを調べる

String str1 = "abcdefg";
Serial.println(str1.length());

1行目で先ほどと同じ「abcdefg」の文字列をstr1で宣言しています。
2行目では、printlnの括弧の中にlength関数が入っています。

length関数は、文字列の長さを文字数という形でお知らせしてくれる関数です。
書き方は String.length() です。
Stringの部分は文字数を調べたいString…今回だとstr1を書きます。
このコードを実行すると、「7」という数字がシリアルモニタに表示されます。


Tips:めんどくさすぎる日本語の話

Stringの関数をいろいろといじくってみた方はもしかしたらお気づきかもしれません。
後ろ2つの「文字列を切り出す」や「文字列の長さを調べる」では、日本語の文字列を切り出したり、長さを調べようとするとうまくいきません!

例えば「ラッキーえのき」をlength関数で調べると、シリアルモニタには「21」と表示されます。
この現象は、日本語の1文字がArduinoの内部では3文字の文字長として扱われていることに起因しています。

最初のArduinoのお約束の項でお話しした通り、Arduinoは基本的には全角文字には対応していません。
“ ”(ダブルクォーテーション)で括ることで日本語の文字をデータとして扱うことはできますが、その文字列に何らかの操作をしようとすると、意図しない結果を招くことがあります。
なので、Arduinoで文字列を扱う時は、下記の事項を心掛けるのがベターかと思います。
  

  • 文字列を操作・処理したり、条件分岐などの判定に使う場合

  →極力半角英数字を使った方がいいと思います
  

  • 日本語表示対応の電子部品に日本語の文字を表示したり、日本語のデータを送ったりしたい

  →日本語の扱いが難しいことに留意して、文字列を使ってください
  

  • プログラムのコメントを日本語で書きたい

  →コメント部分は基本的に日本語を使っても問題ありません
   ただし、作ったプログラムをネット配布する場合は注意が必要です(日本語を使わない海外の人のパソコン環境では文字化けする可能性が高いです)