大変お世話になっております。
文字列を検索するプログラムを作っていたのですが、スペースを含んだ検索がうまくいきません。単語自体を探し当てる事は出来るのですが、「ve p」のようなスペースを含めて検索した時にはたとえそれがテキストに含まれていたとしても探し当てられないんです。
スペースを含めても探し当てられる方法を教えていただけると大変助かります。
よろしくお願いいたします。
サンプル input.txt
「My name is Java and I love programming」
------------------------------
import java.io.*;
import java.util.*;
class Search{
public static void main(String[] args) throws IOException, InterruptedException{
FileReader reader = new FileReader("input.txt");
Scanner in = new Scanner(reader);
int n = 0;
int noLines = 0;
String s = "";
System.out.println("Please insert a pattern name for searching:");
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
String target = console.readLine();
outerLoop:
while(in.hasNextLine()) {
s = "" + in.nextLine();
noLines ++;
Scanner in2 = new Scanner(s);
while(in2.hasNext()){
if(target.equals(in2.next())){
System.out.println("Pattern '" + target + "' is found at the line of " + noLines);
break outerLoop;
}
}
}
}
}
Scannerの使い方がまずいです。
next()の動作調べてみてください。
デフォルトでは空白区切りになっているはずです。
なのでうまくいかないのです。
この場合だとScannerを使わないでも次のような単純なものでいいと思います。
----------------------------------------------------------------
import java.io.*;
class Search {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("input.txt"));
int n = 0;
int noLines = 0;
String s = "";
System.out.println("Please insert a pattern name for searching:");
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
String target = console.readLine();
while(null !=(s = in.readLine())) {
noLines ++;
if(s.indexOf(target)>=0){
System.out.println("Pattern '" + target + "' is found at the line of " + noLines);
break ;
}
}
}
}
お礼
ありがとうございました! 本当に助かりました。