Developer

【初心者Unity】StringBuilderクラスを使いこなそう!
2021.09.01
Lv1

【初心者Unity】StringBuilderクラスを使いこなそう!


はじめに

今回は前回の記事でしれっと出てきたStringBuilderについてご紹介します!

StringBuilderと聞くと連想できてしまうものがあるのではないでしょうか?そうです!string型です。このStringBuilder、その名の通りstringと非常に似ています。具体的にどこが似ているのかと言いますと、文字列を代入し扱うという点です。何ならStringBuilderは↓の様にstringとほとんど同じ使い方をすることができます。

//インスタンス化 & 初期化
StringBuilder sb = new StringBuilder("Hello World");
void Start()
{
     //sbを出力
     Debug.Log(sb);
}

【結果】
Hello World

それでは違いは何なのかと言いますと、stringの欠点をStringBuilderは補っています。え、stringに欠点なんてあったっけ。。。?と思われる方もいらっしゃるかと思いますが。。。そう、あれです。stringは参照している文字列を編集することができませんでした。具体的に言うと、string型のstという変数に「Hello」という文字列を代入した後、「 World」を”加えて”「Hello World」にするということはできません、もしstの「Hello」を「Hello World」にしたければ、「st = “Hello World”」としなければなりません。これはもはや「Hello」に「 World」を”加えた”というより、stは一度「Hello」の参照を切って、新たに「Hello World」の参照を作ったということになります。しかし何と!StringBuilderを使えば文字列を”加える”ことができます。更には削除したり置換したりと、いわゆる文字列の編集ができます。それではStringBuilderでできることを早速見ていきましょう!


StringBuilderでできることまとめ

 

○後ろに文字列を追加する

Append()メソッドを使うと、変数が現在参照している文字列の後ろにさらに文字列を追加することができます。

//インスタンス化 & 初期化
StringBuilder sb = new StringBuilder("Tokyo");
void Start()
{
     //文字列追加前を出力
     Debug.Log(sb);
     //現在の文字列の最後に文字列を追加
     sb.Append("Olympics");
     //文字列追加後を出力
     Debug.Log(sb);
}

【結果】
Tokyo
TokyoOlympics

○途中に文字列を追加する

Insert()メソッドを使うと、変数が現在参照している文字列の好きな場所に文字列を追加することができます。Append()メソッドは後ろにしか追加できなかったのに比べると自由度が上がっています。

//インスタンス化 & 初期化
StringBuilder sb = new StringBuilder("Tokyo2020");
void Start()
{
     //文字列追加前を出力
     Debug.Log(sb);
     //現在の文字列の5文字目に文字列を追加(文字列の番号は0から数えます)
     sb.Insert(5,"Olympics");
     //文字列追加後を出力
     Debug.Log(sb);
}

【結果】
Tokyo2020
TokyoOlympics2020

○文字列の一部を削除する

Remove()メソッドを使うと、変数が現在参照している文字列の好きな部分を削除することができます。

//インスタンス化 & 初期化
StringBuilder sb = new StringBuilder("TokyoOlympics2020");
void Start()
{
     //文字列追加前を出力
     Debug.Log(sb);
     //現在の文字列の5文字目から8文字分を削除(文字列の番号は0から数えます)
     sb.Remove(5,8);
     //文字列追加後を出力
     Debug.Log(sb);
}

【結果】
TokyoOlympics2020
Tokyo2020

○文字列の一部を置換する

Replace()メソッドを使うと、変数が現在参照している文字列のある特定の文字列を別の文字列に変換することができます。

//インスタンス化 & 初期化
StringBuilder sb = new StringBuilder("TokyoOlympics2020");
void Start()
{
     //文字列追加前を出力
     Debug.Log(sb);
     //文字列「2020」を文字列「2021」に変換
     sb.Replace("2020","2021");
     //文字列追加後を出力
     Debug.Log(sb);
}

【結果】
TokyoOlympics2020
TokyoOlympics2021


おわりに

stringではできなかったことがStringBuilderではできてしまうことを実感することはできましたでしょうか?文字列の様々な操作が必要になった時にはぜひStringBuilderを思い出してあげてください!

 

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次