Stringクラスのデータ(オブジェクト)は、一度生成すると変更することができません。+演算子やその他のメソッドで得られる文字列は新たに生成された文字列になります。そのため、Stringクラスで大規模な文字列を扱う場合は、パフォーマンスの点で注意が必要になります。
StringBuilderクラスを用いれば、文字列処理を効率的に行うことができます。StringBuilderには、文字列を編集するための様々なメソッドが定義されています。次のプログラムは、StringBuilderのいくつかのメソッドを用いて文字列を操作します。
class Main{ public static void main(String [] args){ String str = "0123456789"; StringBuilder sb = new StringBuilder(str); // 文字列strを初期値としてビルダーを初期化 System.out.println(sb.toString()); // ビルダーの内容を文字列として出力 System.out.println(sb.substring(1, 5)); // 1文字目から5文字目(含まない)の部分文字列を取得 sb.replace(6, 9, "ABC"); // 6文字目から9文字目(含まない)を"ABC"に置換 System.out.println(sb.toString()); // 012345ABC9 sb.insert(2, "XYZ"); // 2文字目の位置に"XYZ"を挿入 System.out.println(sb.toString()); // 01XYZ2345ABC9 sb.reverse(); // ビルダーの内容を反転 System.out.println(sb.toString()); // 9CBA5432ZYX10 } }
ここで、文字の番号は0から開始され、substring や replaceで指定されるa文字目とb文字目のインデックスは、いわゆる半開区間[a, b)となり、b文字目を含まないことに注意してください。
オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |