ストリングオブジェクトのコツ(Arduino詳解)

Arduino詳解その22です。前回の記事はこちらです。
hirocom777.hatenadiary.org

ストリングオブジェクトの勘所

 前回は、文字データの扱い方とストリングオブジェクトについて説明しました。ストリングオブジェクトには他にもたくさんの機能があります。今回は、それらの機能についてよく使うものをまとめておこうと思います。
f:id:HiroCom777:20201010183247j:plain

数値の文字列を返す

 数値を表す文字列のストリングオブジェクトを作るには、 String(数値) と、するという事を前回お話しましたが、この方法は10進数の表示となります。2進数、16進数表記機にするには数値のあとにその旨表記する必要があります。この方法は整数の数値の場合に有効です。また、浮動小数点小数点の数値では、少数点以下の数値表記を指定することもできます。以下にスケッチ例を示します。

void setup() {
  Serial.begin(9600);
  int x = 12;
  Serial.println(String(x));
  Serial.println("DEC:" + String(x, DEC));
  Serial.println("HEX:" + String(x, HEX));
  Serial.println("BIN:" + String(x, BIN));
  
  Serial.println("");

  float y = 12.34567;
  Serial.println(String(y));
  Serial.println(String(y, 3));
  Serial.println(String(y, 5));
}

void loop() {
}

シリアルモニターには以下の様に表示されました。

12
DEC:12
HEX:c
BIN:1100

12.35
12.346
12.34567

小数点表記は指定なしだと2桁表記になります。

文字列を数値にする

 逆に文字列を数値に変換したい場合もあるわけで、その場合には以下の関数を使います。

String.toInt()

 整数に変換します。先頭から数値として読み込める文字までを数値に変換します。数値と関係ない文字は、0に変換されます。

String.toFloat()

 小数点の数値に変換します。String..toDouble()もあるのですが、処理内容はString.toFloat()と同じです。返ってくる値は小数点以下2桁まで丸められてしまうので注意が必要です。こちらも、先頭から数値として読み込める文字までを数値に変換します。数値と関係ない文字は、0に変換されます。

以下にスケッチ例を示します。

void setup() {
  Serial.begin(9600);
  String x = "12";
  Serial.println(x.toInt());
  x = "12A";
  Serial.println(x.toInt());
  x = "A";
  Serial.println(x.toInt());

  Serial.println("");

  String y = "12.34567";
  Serial.println(y.toFloat());
  y = "12.3A";
  Serial.println(y.toFloat());
  y = "A";
  Serial.println(y.toFloat());
}

void loop() {
}

以下のようにシリアルモニターに返ってきます。
12
12
0

12.35
12.30
0.00

変換する

 以下の関数を使ってストリングオブジェクトを変換することが出来ます。変換した形のストリングオブジェクトを返すのではなくストリングオブジェクト自体を変換するので注意してください。

String.toLowerCase()

 ストリングオブジェクトの文字列を小文字に変換します。

String.toUpperCase()

 ストリングオブジェクトの文字列を大文字に変換します。

String.trim()

 ストリングオブジェクトの前後の空白文字を取り除いた形に変換します。

比べる

 以下の演算子で2つのストリングオブジェクトを比較することが出来ます。ストリングオブジェクトの文字コードを比較してtrueかfalseを返します。
 ==演算子 左辺と右辺が等しい
 >演算子 左辺が大きい
 >=演算子 左辺が大きいか左辺と右辺が等しい
 <演算子 右辺が大きい
 <=演算子 右辺が大きいか左辺と右辺が等しい
 !=演算子 左辺と右辺が等しくない
書き方は
 String1 演算子 String2
となります。

切り取る

String.substring()

 ストリングオブジェクトから一部のストリングオブジェクトを切り取るには以下の関数を使います。位置の指定は先頭が0となります。
書き方は
 String.substring(開始位置、終了位置)
となります。

結合する

 ストリングオブジェクトを使用すると+演算子や+=演算子を使って結合することが出来ます。ストリングオブジェクトと文字配列も結合できます。
書き方は
 String = String1 + String2
 String += String1
となります。

その他

String.length()

 ストリングオブジェクトの文字列長さを返します。

これくらい覚えておけばいいかな・・

 いかがでしたでしょうか。ストリングオブジェクトには他にも沢山機能があるのですが、覚えておくのはこれくらいでいいと思います。あと、ストリングオブジェクトはリソース(メモリ)の消費量が多いので使い方に注意しましょう。次回はArduinoUNOに実装されているEEPROMについて紐解いていきたいと思います。EEPROMを使うと電源を切っても消えない記憶領域をスケッチから操作できるんです。お楽しみに!!
hirocom777.hatenadiary.org

Arduino UNO入門の連載記事はコチラからどうぞ!!