Arduino日本語リファレンス


古い文字列処理ライブラリ

原文

arduino-0019からはStringクラスが使用できます。言語リファレンスの「Stringクラス」の項を参照してください。

TextString

※TextStringライブラリのサポートは終了し、Stringライブラリに移行したようです(2010/01)

プログラミングをしていると、ASCIIデータとして文字列を入出力することが頻繁にあります。Arduinoは複雑なテキスト処理には向いていませんが、文字列を読み込んで、そのなかの語句を探したり、比較したりといった処理はよく必要になります。たとえば、GPS受信機からデータを受信するときや、BluetoothにATコマンドを送るような場合です。このライブラリはそういったときに役立ちます。

【インストール方法】

TextString.zip
http://www.arduino.cc/en/uploads/Tutorial/TextString.zip

上記のファイルをダウンロードして展開し、Arduino IDEのライブラリ用のフォルダ(たとえばarduino-0011\hardware\libraries)にコピーします。その後、Arduino IDEを再度起動すれば使用可能となります。
(その際、デバッグ窓に注意をうながすメッセージが表示されるかもしれませんが、無視しても大丈夫です)

【例】

TextString(int strLength) 指定した長さでTextStringを初期化する

TextString myString = TextString(50); // 50バイト長のTextString

clear(void) TextStringを0で埋めます

myString.clear();     // 文字列をクリア

length(void) 最初の0までの長さを返します

int stringLength = myString.length(); // 文字列myStringの長さ

equals(char *thatString) 引数の文字列と比較します

if (myString.equals("Hello")) {
   // myStringが"Hello"ならば実行される
}

contains(char *subString) 文字列の部分的な一致を調べます

if (myString.contains("Hello")) {
   // myStringが"Hello"を含んでいたら実行される
}

trim(void) 文字列(TextString)の両端の空白、改行、タブなどを取り除きます

Serial.print(myString.trim());  // トリムされたmyStringを送信

trimRight(void) 文字列の終端の空白を取り除きます

Serial.print(myString.trimRight());  // 終端をトリムして送信

trimLeft(void) 文字列の先頭の空白を取り除きます

Serial.print(myString.trimLeft());  // 先頭をトリムして送信

setArray(char* thatString) 文字列を配列にセットします

myString.setArray("Hello, World");  // 文字列をセット

getArray(void) 文字列を配列として取得します

Serial.println(myString.getArray());  // 文字列を送信

getCharAt(int charNum) 指定した位置の文字を取得します

char thisChar = myString.getCharAt(5);  // 6文字目をゲット

setCharAt(int charNum, char thisChar) 指定した位置の文字を変更します

myString.setCharAt(5, 'A');  // 6番目の文字をAに

version(void) 使用しているライブラリのバージョンを取得します

Serial.println(myString.version());  // バージョン情報を送信


旧String

TextStringライブラリの後継です。バージョン0.4の時点でWiring String library APIを使ったものに更新されました。TextString 0.1を元に、Hernando Barraganによって拡張されています。

プログラミングをしていると、ASCIIデータとして文字列を入出力することが頻繁にあります。Arduinoは複雑なテキスト処理には向いていませんが、文字列を読み込んで、そのなかの語句を探したり、比較したりといった処理はよく必要になります。たとえば、GPS受信機からデータを受信するときや、BluetoothにATコマンドを送るような場合です。このライブラリはそういったときに役立ちます。

【インストール方法】

String.zip
http://arduino.cc/en/uploads/Tutorial/String.zip

上記のファイルをダウンロードして展開し、Arduino IDEのライブラリ用のフォルダ(たとえばスケッチ保存用フォルダのlibraries)にコピーします。その後、Arduino IDEを再度起動すれば使用可能となります。
(その際、デバッグ窓に注意をうながすメッセージが表示されるかもしれませんが、無視しても大丈夫です)

前のバージョンにあったtoCharArray()はgetChars()に置き換えられました。この変更は名前の一貫性のためで、両者の機能は同じです。

このバージョンはArduino0015を用いてテストされています。

【関数】

char charAt(int position) - 指定した位置の文字を返します。

int capacity() - 文字列の容量を返します。これはlengthとは異なります。

boolean contains(String thisString) - 文字列thisStringが含まれるとき、trueを返します。

byte[] getBytes() - byteの配列を返します。

char[] getChars() - charの配列を返します。

void setCharAt(int positon, char thisChar) - 文字thisCharをpositionで指定した位置にセットします。

boolean endsWith(String thisString) - 文字列がthisStringで終わっているとき、trueを返します。

boolean equals(String thisString) - 文字列がthisStringと等しいとき、trueを返します。

int indexOf(char thisChar) - 指定した文字が最初に現れる位置を返します。

int length() - 文字列中の文字数を返します。

void replace(char thisChar, char thatChar) 文字thisCharをすべてthatCharで置き換えます。

boolean startsWith(String thisString) - 文字列がthisStringで始まっているとき、trueを返します。

String substring(int beginning, int ending) - 文字列の一部分を、始点beginningと終点endingで指定して、取得します。

void toLowerCase() - 小文字に変換します。

void toUpperCase() - 大文字に変換します。

void append(String thisString) - 文字列thisStringを追加します。thisStringはint、long、char、charの配列などです。

/*
 文字列の追加(append)
 テストする際は、Arduinoにいくつかの文字を送信してください
 by Tom Igoe created 8 Feb 2009
 */

#include <WString.h>                 // Stringライブラリ
#define maxLength 30

String inString = String(maxLength); // 新たなString

void setup() {
  Serial.begin(9600);                // シリアル通信の準備
  Serial.print("String Library version: ");
  Serial.println(inString.version());
}

void loop () {
  if(Serial.available() > 0) {       // 受信データの有無をチェック
    char inChar = Serial.read();     // charとして受信データを読む

    // まだ文字列の終端でなければ、受信した文字を追加する
    if (inString.length() < maxLength) {
      inString.append(inChar);
      Serial.println(inString);
    }
    else {
      Serial.println("You've entered the maximum number of characters.");
    }
  }
}

このほかのサンプルがStringディレクトリ内のexamplesにも用意されています。



[目次へ戻る]

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [ドキュメント一覧]