文字列の部分一致検索を行う方法

文字列が完全に一致するかどうか調べるならequalsメソッドを使用します。

String str11 = "文字列の検索サンプルです";
String str12 = "検索";
 
if (str11.equals(str12)) {
  System.out.println( "完全一致です" );
} else {
  System.out.println( "完全一致ではありません" );
}

文字列を検索 indexOfメソッド

文字列を検索するには、indexOfメソッドを使用することができます。

public int indexOf(String str)

indexOfメソッドは、ある文字列から別の文字列を左側から右側に検索し、見つかった位置を返します。
該当する文字列がなかった場合は -1 が返ります。

String str21 = "文字列の検索サンプルです";
String str22 = "検索";
 
if (str21.indexOf(str22) != -1) {
  System.out.println( "部分一致です" );
} else {
  System.out.println( "部分一致ではありません" );
}

スポンサーリンク

前方一致検索 startsWithメソッド

前方一致検索を行うには、indexOfメソッドの戻り値が 0 かどうかで判断できますが、startsWithメソッドを使用する方法もあります。

public boolean startsWith(String str)

一致した場合はtrue,不一致ならfalseになります。

String str31 = "文字列の検索サンプルです";
String str32 = "文字列の";
if (str31.startsWith(str32)) {
  System.out.println( "前方一致(接頭辞)です" );
} else {
  System.out.println( "前方一致ではありません" );
}

後方一致検索 endsWithメソッド

startsWithメソッドとは逆に後方一致検索を行うには、endsWithメソッドを使います。

public boolean endsWith(String str)

一致した場合はtrue,不一致ならfalseになります。

String str41 = "文字列の検索サンプルです";
String str42 = "サンプルです";
 
if (str41.endsWith(str42)) {
  System.out.println( "後方一致(接尾辞)です" );
} else {
  System.out.println( "後方一致ではありません" );
}

正規表現での検索 matchesメソッド

高度な検索はmatchesメソッドを使います。 matchesメソッドは正規表現を使用して検索を行います。

public boolean matches(String regex)

一致した場合はtrue,不一致ならfalseになります。

matchesメソッドは部分一致を検索するものではなく、完全一致を検索します。

String str51 = "文字列の検索サンプルです";
String str52 = "サンプル";

if (str51.matches(".*" + str52 + ".*")) {
  System.out.println( "部分一致です" );
} else {
  System.out.println( "部分一致ではありません" );
}

Javaで正規表現のエスケープを行うには Pattern.quote(str)を使用します。

import java.util.regex.Pattern;

String str61 = "012345[a-z][0-9][a-z]012345";
String str62 = "[a-z][0-9][a-z]";

if (str61.matches(".*" + Pattern.quote( str62 ) + ".*")) {
  System.out.println( "部分一致です" );
} else {
  System.out.println( "部分一致ではありません" );
}

Pattern.quote は文字列中の正規表現記号それぞれをエスケープシーケンスでエスケープするのではなく、正規表現エスケープの開始記号¥Qと終了記号¥Eで囲うだけです。
つまり次のものと同義です。

if (str61.matches(".*" + "\\Q" + str62 + "\\E" + ".*")) {
  System.out.println( "部分一致です" );
} else {
  System.out.println( "部分一致ではありません" );
}

関連記事

スポンサーリンク

BETWEEN演算子 範囲におさまっている場合に真を返す

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る