Java Stringの基本操作まとめ|長さ取得・結合・部分文字列を徹底解説
生徒
「Javaで文字の長さを調べたり、文字同士をくっつけたりする方法が知りたいです。特に、文字列の中から決まった部分だけを取り出すにはどうすればいいですか?」
先生
「Javaでは、Stringクラスに便利なメソッドがたくさん用意されています。長さの取得、結合、そして部分的な抽出(サブストリング)など、どれもプログラム開発では必須の知識ですよ。」
生徒
「難しそうに見えますが、初心者でもすぐに使いこなせますか?」
先生
「もちろんです!まずは基本となるメソッドの使い方から、具体例を交えて順番に学んでいきましょう。一度コツを掴めば、自由自在に文字列を操れるようになりますよ。」
1. JavaのStringクラスとは?文字列操作の基本
Javaプログラミングにおいて、文字列を扱うための中心的な存在がStringクラスです。名前や住所、メッセージなど、あらゆるテキスト情報は文字列として処理されます。Javaの文字列は「不変(イミュータブル)」という特徴を持っており、一度作成した文字列の内容を直接変更することはできません。代わりに、操作の結果として新しい文字列を作成するという仕組みになっています。
これから紹介する長さの取得や結合、部分抽出といった操作は、実務レベルの開発でも毎日と言っていいほど頻繁に使用されます。基礎をしっかり固めることで、複雑なロジックもスムーズに書けるようになります。まずは、もっとも基本となる「長さの確認」から見ていきましょう。
2. 文字列の長さを取得するlengthメソッド
文字列の中に何文字入っているかを知りたいときは、lengthメソッドを使用します。例えば、ユーザーが入力したパスワードの文字数をチェックしたり、文章の長さを制限したりする場合に非常に役立ちます。このメソッドは、全角文字も半角文字も同様に「1文字」としてカウントするのが特徴です。
空白(スペース)も一文字として数えられる点に注意しましょう。プログラミングにおいて、文字数を正確に把握することは、データの検証や表示の調整において非常に重要なステップとなります。まずは以下のコードで、実際の動きを確認してみましょう。
public class StringLengthExample {
public static void main(String[] args) {
String greeting = "こんにちは、Java!";
// 文字列の長さを取得
int length = greeting.length();
System.out.println("元の文字列: " + greeting);
System.out.println("文字数: " + length);
}
}
元の文字列: こんにちは、Java!
文字数: 9
3. 文字列を連結する方法!プラス演算子とconcat
複数の文字列を一つにつなげる操作を「結合」と呼びます。Javaで最も一般的な結合方法は、プラス演算子(+)を使う方法です。直感的で分かりやすく、数値と文字列を結合させることも可能です。また、メソッドとして用意されているconcatを使用する方法もありますが、一般的にはプラス演算子が好んで使われます。
注意点として、大量の文字列を繰り返し結合する(ループ内で行うなど)場合は、実行速度やメモリ効率の観点から別のクラス(StringBuilderなど)を検討する必要がありますが、数個の変数をくっつける程度であれば、プラス記号だけで十分対応できます。データの整形やメッセージの組み立てに活用してみましょう。
public class StringConcatExample {
public static void main(String[] args) {
String firstName = "田中";
String lastName = "太郎";
// プラス演算子で結合
String fullName = firstName + " " + lastName + "さん";
// concatメソッドで結合
String message = "こんにちは、".concat(fullName);
System.out.println("フルネーム: " + fullName);
System.out.println("挨拶文: " + message);
}
}
フルネーム: 田中 太郎さん
挨拶文: こんにちは、田中 太郎さん
4. substringメソッドで文字列の一部を抽出する
文字列の特定の部分だけを抜き出したいときに使うのが、substringメソッドです。このメソッドには、開始位置だけを指定する方法と、開始位置と終了位置の両方を指定する方法の2パターンがあります。例えば、年月日が繋がった「20240520」という文字列から「年」の部分だけを取り出すといった操作が可能です。
Javaの文字列は、最初の文字が「0番目」から数えられる「ゼロインデックス」方式です。この数え方を間違えると、意図しない文字が取得されたり、エラーが発生したりするため注意が必要です。抽出したい範囲を正確に指定する練習をしてみましょう。
public class SubstringExample {
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// 10番目(K)から最後まで抽出
String fromK = alphabet.substring(10);
// 0番目から3番目の直前まで(3文字)抽出
String abc = alphabet.substring(0, 3);
System.out.println("10番目以降: " + fromK);
System.out.println("最初の3文字: " + abc);
}
}
10番目以降: KLMNOPQRSTUVWXYZ
最初の3文字: ABC
5. インデックス番号の数え方と範囲指定の注意点
substring(int beginIndex, int endIndex)を使う際、多くの初心者が「終了位置(endIndex)」の指定でつまずきます。このメソッドのルールは、「開始位置は含むが、終了位置は含まない」という点にあります。例えばsubstring(0, 5)と書いた場合、インデックス0, 1, 2, 3, 4の合計5文字が抽出されます。インデックス5の文字は含まれません。
この考え方は、Java以外の多くのプログラミング言語でも採用されている標準的な仕組みです。文字を数えるときは、「文字と文字の間の隙間に番号がついている」とイメージすると分かりやすくなります。指定した範囲が文字列の長さを超えてしまうと、StringIndexOutOfBoundsExceptionというエラー(例外)が発生するため、事前に文字数を確認しておくことも重要です。
6. 大文字・小文字の変換と空白の除去
文字列操作には、抽出や結合以外にも便利な機能がたくさんあります。例えば、メールアドレスの入力チェックなどでよく使われるのが、大文字・小文字の変換(toLowerCase, toUpperCase)や、文字列の前後にある不要な空白を取り除くtrimメソッドです。
ユーザーが入力フォームで誤って末尾にスペースを入れてしまった場合、そのままでは検索やログインの処理が失敗する可能性があります。そういった予期せぬ不具合を防ぐために、これらのメソッドを活用してデータをクレンジング(整形)することが、品質の高いプログラムを作るコツです。
public class StringFormatExample {
public static void main(String[] args) {
String rawInput = " Java Programming ";
// 空白を除去
String trimmed = rawInput.trim();
// すべて大文字に変換
String upper = trimmed.toUpperCase();
// すべて小文字に変換
String lower = trimmed.toLowerCase();
System.out.println("元の状態: [" + rawInput + "]");
System.out.println("空白除去後: [" + trimmed + "]");
System.out.println("大文字: " + upper);
System.out.println("小文字: " + lower);
}
}
元の状態: [ Java Programming ]
空白除去後: [Java Programming]
大文字: JAVA PROGRAMMING
小文字: java programming
7. 文字列の検索と特定の文字が含まれているかの判定
特定のキーワードが文章の中に含まれているかどうかを調べるには、containsメソッドを使います。これは結果を真偽値(true/false)で返してくれるため、条件分岐のif文と相性が抜群です。また、その文字が「どこにあるか」を知りたいときはindexOfメソッドを使用します。
indexOfは、見つかった最初の位置をインデックス番号で返してくれます。もし指定した文字が見つからなかった場合は「-1」が返されるというルールがあります。これらを組み合わせることで、「特定の文字が現れる位置から後ろの部分をすべて抜き出す」といった応用的な操作も可能になります。
8. 文字列の置換(replace)で中身を書き換える
最後にご紹介するのが、文字列の中にある特定の文字を別の文字に置き換えるreplaceメソッドです。例えば、文章の中の特定のNGワードを伏せ字にしたり、日付の区切り文字であるスラッシュ「/」をハイフン「-」に変更したりする場合に使用します。
前述の通り、Javaの文字列は不変なので、元の変数の内容が直接書き換わるわけではありません。置換された「新しい文字列」が返されるため、その結果を新しい変数に代入するか、元の変数に上書き代入して使用します。一括で複数の箇所を置換できるため、非常に強力なツールとなります。