JavaのStringクラス - substringとstartsWithメソッドの違いを徹底解説!初心者でもわかる文字列操作
生徒
「Javaで、文字列を一部取り出したり、特定の文字列で始まるかを確認する方法ってありますか?」
先生
「良い質問ですね!JavaのStringクラスには、substringメソッドとstartsWithメソッドがあります。これらを使うことで、文字列の一部分を取り出したり、特定の文字列で始まっているかをチェックすることができますよ。」
生徒
「具体的にはどのように使い分けるんですか?」
先生
「では、これらのメソッドの使い方と違いを見ていきましょう!」
1. substringメソッドとは?
「1. substringメソッドとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
Javaのsubstringメソッドは、文字列の「一部分だけを取り出したい」ときに使うメソッドです。例えば、あいさつ文や日付の文字列から、必要なところだけを抜き出して表示したいときにとても便利です。
まずは、シンプルな例から見てみましょう。「Hello, World!」という文字列から、先頭の「Hello」だけを取り出してみます。
public class SubstringExample {
public static void main(String[] args) {
String text = "Hello, Java World!";
// 文字列の一部を取り出す(0文字目から4文字目まで)
String subText = text.substring(0, 5);
System.out.println("取り出した文字列: " + subText);
}
}
このコードを実行すると、次のような結果が得られます。
取り出した文字列: Hello
substring(開始位置, 終了位置)のように指定すると、「開始位置から、終了位置の1つ手前まで」が取り出されます。ここでは0文字目から5文字目の手前まで、つまり「Hello」の部分だけが取り出されています。文字の数え方は「0から始まる」という点も、Javaの文字列操作ではとても大事なポイントです。
もう少し現実的な例として、日付の文字列から「年」の部分だけを取り出すこともできます。
public class DateSubstringExample {
public static void main(String[] args) {
String date = "2024-11-15";
// 先頭4文字だけを取り出して「年」として利用
String year = date.substring(0, 4);
System.out.println("年だけ取り出した結果: " + year);
}
}
このプログラムでは、「2024-11-15」という文字列からsubstring(0, 4)を使って「2024」という部分だけを取り出しています。このように、substringメソッドを使うと、長い文字列の中から必要な情報だけを切り出して扱うことができます。Javaで文字列処理をするうえで、最初に覚えておきたい基本的なメソッドのひとつです。
2. startsWithメソッドとは?
startsWithメソッドは、文字列が「ある文字列で始まっているかどうか」を調べるためのメソッドです。難しく考える必要はなく、「この文章は〇〇から始まっている?」と質問するイメージです。Javaの文字列処理では、メッセージの判定やURLのチェックなど、かなりよく使われます。
例えば、Webサイトのアドレス(URL)が「https」で始まっているかどうかを調べたい場面を考えてみましょう。「https」で始まっていれば暗号化された通信で、安全なサイトかどうかの目安にできます。
public class StartsWithExample {
public static void main(String[] args) {
String url = "https://www.example.com";
// "https"で始まるかを確認
boolean isSecure = url.startsWith("https");
System.out.println("URLはhttpsで始まる: " + isSecure);
}
}
このプログラムを実行すると、次のように表示されます。
URLはhttpsで始まる: true
startsWithは、結果としてtrue(はい)かfalse(いいえ)を返します。上の例では、URLが実際に「https」で始まっているので、trueが返されて画面にもtrueと表示されます。もし"http://..."のように「http」で始まる文字列であれば、結果はfalseになります。
この真偽値(true / false)を、そのままif文などに使うことで、「httpsで始まっているときだけ特別な処理をする」といった書き方もできます。文字列の先頭をチェックして処理を分けたいときに、とても読みやすいJavaの書き方になります。
もう一つ、ログメッセージの例も見てみましょう。エラーメッセージだけを判定したいとき、「[ERROR]」という文字列で始まっているかどうかを調べることができます。
public class LogStartsWithExample {
public static void main(String[] args) {
String log = "[ERROR] データの読み込みに失敗しました";
// "[ERROR]"で始まるかどうかをチェック
if (log.startsWith("[ERROR]")) {
System.out.println("エラーログとして処理します");
}
}
}
このサンプルでは、startsWith("[ERROR]")がtrueになるので、「エラーログとして処理します」というメッセージが表示されます。文字列の先頭を見て種類を判定する、というのは実際のJavaプログラミングでよくあるパターンです。ファイル名が「IMG_」で始まるかどうかを判定したり、「Java」という単語で始まる見出しだけを処理したりすることもできます。
このように、startsWithメソッドは「文字列の先頭が何になっているか」をチェックするための基本的なメソッドです。まずは、URLやログメッセージなど、自分の身近な例で試してみると、Javaの文字列操作の感覚がつかみやすくなります。
3. substringとstartsWithの違いと使い分け
ここまで紹介したsubstringとstartsWithは、どちらも文字列操作ではよく使われる基本メソッドです。ただし、目的がまったく異なるため、「どんな場面で使うのか」をしっかり理解しておくと、コードがぐっと読みやすくなります。特にJava初心者の方は、この2つを混同しやすいので、ここで丁寧に整理しておきましょう。
substring:文字列の中から「必要な部分だけを切り出す」ためのメソッド。住所から郵便番号だけ抜き取ったり、日付から「年」だけ取り出すなど、部分抽出に向いています。startsWith:文字列が「特定の語句で始まっているかどうか」を調べるメソッド。ファイル名の判定やメッセージの判別など、条件チェックに使われます。
この2つは性質が異なりますが、実際のプログラムでは組み合わせて使うことも多いです。まず先頭を判定してから、必要な部分だけを切り出す、といった流れは初心者でも覚えておきたいテクニックです。
次のサンプルでは、とてもシンプルな文章を使って、両方のメソッドがどんな役割を果たしているのかを確認してみましょう。
public class CombinedExample {
public static void main(String[] args) {
String message = "Welcome to Java Programming!";
// "Welcome"で始まっているか確認
if (message.startsWith("Welcome")) {
// 先頭の確認がtrueなら、必要な部分を切り出す
String extracted = message.substring(11, 15);
System.out.println("抽出した文字列: " + extracted);
}
}
}
サンプルを実行すると、次のように表示されます。
抽出した文字列: Java
この例では、まずstartsWithで文章の頭が「Welcome」かどうかを判断し、その後でsubstringを使って「Java」の部分だけを抜き出しています。実務でも「特定の形式かどうか」をチェックしてから処理を進めるケースは多く、初心者の段階でこの流れに慣れておくと後々とても役立ちます。ぜひ自分でも文章を変えて試してみてください。
4. substringとstartsWithの便利な使い方をマスターしよう
「4. substringとstartsWithの便利な使い方をマスターしよう」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
substringとstartsWithは、Javaで文字列を扱う際に必ずと言っていいほど登場する基本メソッドです。特に初心者の方がつまずきやすい「文字列の一部分だけを扱いたい場面」や「文章の形式をチェックしたい場面」で、とても強力なツールとして活躍します。
例えば、メールアドレスの文字列から「@より前の文字列だけ取り出したい」という場面を考えてみましょう。こうしたケースでは、まずstartsWithで形式を軽く確認し、問題なければsubstringで必要な部分を切り出す、といった処理が自然に書けるようになります。初心者でもすぐ応用できるので、ここで一度イメージをつかんでおくと良いでしょう。
次のサンプルは、メールアドレスの先頭が特定の文字で始まっているかを判定し、その後で名前部分だけを取り出す簡単な例です。
public class UsefulExample {
public static void main(String[] args) {
String email = "info@example.com";
// "info"で始まっているかチェック
if (email.startsWith("info")) {
// "info"部分を抽出
String name = email.substring(0, 4);
System.out.println("抽出した文字列: " + name);
}
}
}
このコードでは、メールアドレスが「info」で始まるかどうかを確認し、先頭4文字だけを取り出しています。実際のプログラムでは「先頭の形式をチェック → 必要部分を抽出」という流れを組むことが多いため、この組み合わせに慣れておくと文字列処理が一気に理解しやすくなります。
文字列はどんなアプリケーションでも頻繁に扱うデータです。シンプルなメソッドでも使いこなすことで、コードの見通しが良くなり、処理も分かりやすくなります。ぜひ手元でいろいろな文字列を使って試しながら、自然に使い分けられるように練習してみてください。
5. substringの応用テクニックと注意点
substringメソッドは単純な切り出しだけでなく、少し工夫することでさまざまな場面に応用できます。例えば、特定の文字の位置をindexOfで取得し、その位置を使って動的に文字列を切り出すことが可能です。これにより、決まった位置ではなく、状況に応じて柔軟に文字列を扱うことができます。
ただし、substringを使う際には、範囲外のインデックスを指定するとエラーになる点に注意が必要です。特に初心者の方は、文字列の長さを確認せずに処理を書いてしまうことが多いため、lengthメソッドと組み合わせて安全に扱うことが重要です。
public class SubstringAdvancedExample {
public static void main(String[] args) {
String text = "Java Programming";
// 空白の位置を取得
int index = text.indexOf(" ");
// 空白より前の文字列を取得
String firstWord = text.substring(0, index);
System.out.println("最初の単語: " + firstWord);
}
}
最初の単語: Java
このように、位置を動的に取得してからsubstringを使うことで、より実用的な文字列処理ができるようになります。
6. startsWithの応用パターンと実務での使い方
startsWithメソッドは単純な判定だけでなく、実務ではさまざまなパターンで活用されます。例えば、複数の条件を組み合わせて判定したり、特定の接頭辞を持つデータだけを抽出する場合などに使われます。ファイル名の分類やログ解析、URLの判定などで非常に役立ちます。
また、startsWithはオフセットを指定することで、文字列の途中から判定を行うこともできます。これにより、より柔軟な文字列チェックが可能になります。
public class StartsWithAdvancedExample {
public static void main(String[] args) {
String fileName = "IMG_20241115.png";
// "IMG_"で始まるかをチェック
if (fileName.startsWith("IMG_")) {
System.out.println("画像ファイルです");
}
// 5文字目から"2024"で始まるかをチェック
boolean isYear2024 = fileName.startsWith("2024", 4);
System.out.println("2024年のファイル: " + isYear2024);
}
}
画像ファイルです
2024年のファイル: true
このように、startsWithは単純な先頭判定だけでなく、応用することでさまざまな条件チェックに活用できます。
7. substringとstartsWithを使った実践的な処理例
「7. substringとstartsWithを使った実践的な処理例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
実際の開発では、substringとstartsWithを組み合わせて使う場面が非常に多くあります。例えば、ユーザーが入力したデータが特定の形式で始まっているかを確認し、その後で必要な情報だけを抽出するといった処理です。
このような流れを理解しておくことで、文字列処理の基本パターンを身につけることができます。初心者の方は、まずはシンプルな条件判定と切り出しの組み合わせから練習していくとよいでしょう。
public class PracticalExample {
public static void main(String[] args) {
String data = "ID:12345";
// "ID:"で始まるか確認
if (data.startsWith("ID:")) {
// ID部分だけを取り出す
String id = data.substring(3);
System.out.println("抽出したID: " + id);
}
}
}
抽出したID: 12345
このような処理は、データの解析や入力チェック、ログ処理など多くの場面で利用されます。substringとstartsWithの基本をしっかり理解することで、より実践的なJavaプログラミングができるようになります。
まとめ
この記事では、Javaの文字列処理に欠かせないsubstringとstartsWithメソッドの違いと特徴をていねいにふりかえりながら学んできました。ふだんのプログラム開発では、文字列の一部を取り出したり、特定の語句ではじまっているかどうかを判定したりする場面がとても多く、この二つのメソッドを正しく理解しているかどうかでコードの読みやすさや処理の正確さがぐっと変わってきます。とくにsubstringは文字列を柔軟に切り出せるため、データ処理や入力値の加工など多くの場面で活躍します。一方でstartsWithは条件分岐や判定処理にとても便利で、特定の形式をもつ文字列かどうかを判断する場面で非常に重宝します。たとえばURL判定、検索キーワードの絞り込み、ログ解析、設定ファイルの判定など、さまざまな状況でstartsWithは役に立ちます。 また、substringとstartsWithは目的がちがうので、使い分けをしっかり意識することが重要です。substringは部分抽出、startsWithは先頭判定という役割のちがいを理解し、状況に応じて組み合わせることで、より表現力の高いコードを書くことができます。実務では、入力値チェックの前処理としてstartsWithを使い、その後substringで必要な情報だけを切り出すという流れが自然に登場します。さらに、データフォーマットの整形やログ解析ツールの作成など、さまざまな用途でこれらのメソッドが活用されます。文字列操作は基本的なテーマですが、その応用範囲は広いので、初学者のうちにしっかり理解しておくとあとで大きな武器になります。 実際に自分でコードを書きながら挙動を確認することで、引数として指定する開始位置、終了位置、判定対象の語句がどのように結果へ影響するのかも自然に理解できるようになります。文字列操作は抽象的に感じやすい部分ですが、具体例を通して手を動かすほど理解が深まり、自信をもって扱えるようになります。これまでのサンプルコードを参考に、自分の開発環境で動かしながら試すことで、Javaの文字列処理にまつわる理解がより確実なものになるでしょう。
substringとstartsWithの動きを確認するサンプル
public class SummarySample {
public static void main(String[] args) {
String title = "JavaProgrammingBasics";
// 先頭が"Java"ではじまるか確認
if (title.startsWith("Java")) {
System.out.println("先頭がJavaではじまります");
}
// 文字列の一部を抽出
String part = title.substring(4, 15);
System.out.println("抽出した文字列: " + part);
// 組み合わせて利用
if (title.startsWith("Java")) {
String extracted = title.substring(4);
System.out.println("組み合わせ抽出: " + extracted);
}
}
}
生徒
「先生、今回の学習でsubstringとstartsWithのちがいがかなりわかりやすくなりました。用途がしっかり分かれているんですね。」
先生
「そのとおりです。文字列処理はJavaの中でもとてもよく使う分野なので、きちんと理解しておくといろいろな場面で役に立ちますよ。」
生徒
「たしかに、入力チェックやメッセージの加工など、思ったより使いどころが多いですね。組み合わせて使うのも便利だと感じました。」
先生
「良い気づきですね。条件判定と部分抽出をスムーズに扱えるようになると、自然とコードの質も上がっていきます。今後はreplaceやsplitなどの文字列メソッドも一緒に学ぶとさらに理解が深まりますよ。」
生徒
「はい、今回学んだsubstringとstartsWithをしっかり練習して、もっと文字列処理に慣れていきたいです!」
先生
「素晴らしいですね。これからも実際に手を動かしながら学んでいきましょう。」