Java FAQ
|
|
StringクラスのindexOfメソッドを利用ことによって、文字列中に別の文字列が含まれるかどうかを調べることができます。
文字列s1中に文字列s2が含まれるかどうかは、s1.indexOf(s2)で調べます。文字列s2がs1の部分文字列である場合は、最初の部分文字列の先頭文字のインデックスが返され、部分文字列がない場合は-1が返されます。
プログラム例を以下に示します。
テキスト:123漢字ABC日本語abc
パターン:日本語
テキスト:123漢字ABC日本語abc
パターン: 日本語 |
// indexOfメソッドによる文字列探索
import java.util.Scanner;
class IndexOfTester {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("テキスト:");
String s1 = stdIn.next(); // テキスト用文字列
System.out.print("パターン:");
String s2 = stdIn.next(); // パターン用文字列
int idx = s1.indexOf(s2); // 文字列s1から文字列s2を探索(先頭側)
if (idx == -1)
System.out.println("テキスト中にパターンは存在しません。");
else {
// マッチ文字の直前までの《半角》での文字数を求める
int len = 0;
for (int i = 0; i < idx; i++)
len += s1.substring(i, i + 1).getBytes().length;
len += s2.length();
System.out.printf("テキスト:%s\n", s1);
System.out.printf(String.format("パターン:%%%ds\n", len), s2);
}
}
}