文字列の照合
文字列の照合(しょうごう、英: string matching)とは、ある文字列(パターン)が、別の文字列(テキスト)中に出現するかどうかを調べる処理のことを指します。
例えば、"apple" というパターンが、"I like apples and oranges." というテキスト中に出現するかどうかを調べる場合、パターンの各文字をテキストの各文字と比較していき、一致しない箇所があった場合は次の位置から比較を続けます。パターンが見つかった場合は、その開始位置を報告するか、パターンが見つからなかった場合は、見つからなかったことを報告します。以下のサンプルプログラムでは見つからなかった場合は-1を返す仕様になっています。
文字列の照合は、コンピュータサイエンスにおいて基本的かつ重要な問題であり、情報検索、自然言語処理、バイオインフォマティクスなどの分野で広く応用されています。検索エンジン、テキストエディタ、バイオインフォマティクスのソフトウェアなど、多くのアプリケーションで利用されています。
Javaの文字列照合には、Stringクラスに用意されている indexOf() メソッドがあります。このメソッドは、指定された文字列が現れる最初のインデックスを返します。もし文字列が見つからなかった場合は、-1を返します。
String text = "I love programming in Java!";
String pattern = "love";
System.out.println(text.indexOf(pattern));
以下はindexOf() メソッドを模した動作をするプログラムです。
<サンプルプログラム>
public class PatternMatching {
public static int findMatch(String text, String pattern) {
int textLength = text.length(); // テキスト文字列の長さを取得
int patternLength = pattern.length(); // パターン文字列の長さを取得
for (int i = 0; i <= textLength - patternLength; i++) { // テキスト文字列全体に対してループ処理を行う
int j;
for (j = 0; j < patternLength; j++) { // パターン文字列全体に対してループ処理を行う
if (text.charAt(i + j) != pattern.charAt(j)) { // テキスト文字列とパターン文字列を比較し、一致しない場合はループを終了する
break;
}
}
if (j == patternLength) { // パターン文字列全体に対してループ処理が完了し、一致が見つかった場合、テキスト文字列内の開始インデックスを返す
return i;
}
}
return -1; // 一致が見つからなかった場合、-1を返す
}
public static void main(String[] args) {
String text = "abbdeabcdabc";
String pattern = "abc";
int matchIndex = findMatch(text, pattern);
if (matchIndex != -1) {
System.out.println("パターン" + pattern + " が " + matchIndex + " 番目の添字以降に見つかりました。 ");
} else {
System.out.println("パターン" + pattern + " は見つかりませんでした。");
}
}
}
<出力結果>
パターンabc が 5 番目の添字以降に見つかりました。 |
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法