2024.11.26

文字列の中の文字/文字列を検索

文字/文字列の検索とは?

指定した文字/文字列が、文字列のどの位置にあるかを探すことです。探した位置の結果は、文字列の先頭からの番号です。

例えば、以下の文字列

	ABCDEFGHIJK

の中に、

	DEF

が有るかを探すと、

	ABCDEFGHIJK

となります。

この例では、先頭から4番目の文字のところで一致してます。

ここでは、次に説明するString.indexOfメソッドを使って、文字/文字列の検索を行います。

このメソッド戻り値は、先頭の文字のインデックスを0としているので、上の例の検索位置4から1を引いた3が検索した位置となります。

String.indexOfメソッド

文字列に含まれる文字/文字列は、StringクラスindexOfメソッドで検索することができます。

メソッドの仕様は以下のとおりです。

IndexOfメソッド

int indexOf( int ch )
・文字列内で、指定された文字が最初に出現する位置のインデックスを返します。

  パラメータ ch  : 文字

  戻り値     インデックスを戻します。文字が見つからない場合、-1を戻します。
int indexOf( int ch, int fromIndex )
・文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。

  パラメータ ch  : 文字
                      fromindex  : 開始インデックス

  戻り値     インデックスを戻します。文字が見つからない場合、-1を戻します。
int indexOf( String str )
・文字列内で、指定された文字列が最初に出現する位置のインデックスを返します。

  パラメータ str  : 文字列

  戻り値     インデックスを戻します。文字が見つからない場合、-1を戻します。
int indexOf( String str, int fromIndex )
・文字列内で、指定されたインデックスから検索を開始し、指定された文字列が最初に出現する位置のインデックスを返します。

  パラメータ str  : 文字列
                      fromindex  : 開始インデックス

  戻り値     インデックスを戻します。文字が見つからない場合、-1を戻します。

これらのメソッド戻り値のインデックスは、検索した文字列の位置です。

指定した文字/文字列が見つからなかった場合は、-1が戻ります。

文字列のインデックス

文字列のインデックスは、文字列の各文字の位置のことです。

インデックスは先頭文字の0から始まり、1ずつ増えていきます。

以下は、文字列とインデックスの具体例です。

Javaのプログラミングを学習する「 ゆるゆるプログラミング」
0 1 2 3 4 5 6 7 8 9
J a v a
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29

上の例の文字列は30文字なので、0~29がインデックスの範囲になります、

Javaソースコード - 文字の位置を検索

指定した文字の位置を検索するJavaソースコードです。

StringIndexOf1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
public class StringIndexOf1 {
	public static void main(String[] args) {
		// Stringクラスに値を代入
		String s = "Javaのプログラミングを学習する「ゆるゆるプログラミング」";

		// インデックスを格納する変数
		int index;

		// 文字「a」の位置を検索
		 index = s.indexOf( 'a' );
		System.out.println("「a」の検索結果:" + index );

		// 文字「プ」の位置を検索
		index = s.indexOf( 'プ' );
		System.out.println("「プ」の検索結果:" + index );

		// 文字「学」の位置を検索
		index = s.indexOf( '学' );
		System.out.println("「学」の検索結果:" + index );

		// 文字「A」の位置を検索
		index = s.indexOf( 'A' );
		System.out.println("「A」の検索結果:" + index );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis StringIndexOf1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac StringIndexOf1.java

実行

C:\talavax\javasample>java StringIndexOf1

実行結果

「a」の検索結果:1
「プ」の検索結果:5
「学」の検索結果:13
「A」の検索結果:-1

「a」はインデックス3にも有りますが、String.indexOfメソッドは先頭に近いインデックスを戻すので、検索結果は1になっています。

Javaソースコード - 文字列の位置を検索

指定した文字列の位置を検索するJavaソースコードです。

StringIndexOf2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
public class StringIndexOf2 {
	public static void main(String[] args) {
		// Stringクラスに値を代入
		String s = "Javaのプログラミングを学習する「ゆるゆるプログラミング」";

		// インデックスを格納する変数
		int index;

		// 文字列「Java」の位置を検索
		 index = s.indexOf( "Java" );
		System.out.println("「Java」の検索結果:" + index );

		// 文字列「プログラミング」の位置を検索
		 index = s.indexOf( "プログラミング" );
		System.out.println("「プログラミング」の検索結果:" + index );

		// 文字列「学習」の位置を検索
		 index = s.indexOf( "学習" );
		System.out.println("「学習」の検索結果:" + index );

		// 文字列「JAVA」の位置を検索
		 index = s.indexOf( "JAVA" );
		System.out.println("「JAVA」の検索:" + index );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis StringIndexOf2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac StringIndexOf2.java

実行

C:\talavax\javasample>java StringIndexOf2

実行結果

「Java」の検索結果:0
「プログラミング」の検索結果:5
「学習」の検索結果:13
「JAVA」の検索:-1

プログラミング」はインデックス22にも有りますが、String.indexOfメソッドは先頭に近いインデックスを戻すので、検索結果は5になっています。

Javaソースコード - 開始インデックスを指定して文字の位置を検索

開始インデックスを指定して、指定した文字の位置を検索するJavaソースコードです。

StringIndexOf3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
public class StringIndexOf3 {
	public static void main(String[] args) {
		// Stringクラスに値を代入
		String s = "Javaのプログラミングを学習する「ゆるゆるプログラミング」";

		// インデックスを格納する変数
		int index;

		// 文字「a」の位置をインデックス2から検索
		 index = s.indexOf( 'a', 2 );
		System.out.println("「a」の検索結果:" + index );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis StringIndexOf3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac StringIndexOf3.java

実行

C:\talavax\javasample>java StringIndexOf3

実行結果

「a」の検索結果:3

「a」はインデックス1にも有りますが、String.indexOfメソッドに開始インデックス2を指定しているので、検索結果は3になっています。

開始インデックスより小さいインデックスは、検索の対象外になります。

Javaソースコード - 開始インデックスを指定して文字列の位置を検索

開始インデックスを指定して、指定した文字列の位置を検索するJavaソースコードです。

StringIndexOf4.java

001
002
003
004
005
006
007
008
009
010
011
012
013
public class StringIndexOf4 {
	public static void main(String[] args) {
		// Stringクラスに値を代入
		String s = "Javaのプログラミングを学習する「ゆるゆるプログラミング」";

		// インデックスを格納する変数
		int index;

		// 開始インデックス10を指定して、文字列「プログラミング」の位置を検索
		 index = s.indexOf( "プログラミング", 10 );
		System.out.println("「プログラミング」の検索結果:" + index );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis StringIndexOf4.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac StringIndexOf4.java

実行

C:\talavax\javasample>java StringIndexOf4

実行結果

「プログラミング」の検索結果:22

プログラミング」はインデックス5にも有りますが、String.indexOfメソッドに開始インデックス10を指定しているので、検索結果は22になっています。

開始インデックスより小さいインデックスは、検索の対象外になります。

以上です。

関連コンテンツ

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

数値しか扱えないコンピュータでどうやって文字を記憶、処理しているのかを説明しています。興味のある方は、記事をご覧ください。

2020.03.23

Javaのmainメソッドで受け取るパラメータについて解説しています。

2017.09.26

mainメソッドで受け取るパラメータの数の取得の仕方について解説しています。

2019.05.14

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

そもそもプログラミングってどういう意味?

2022.08.09

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告