こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

スペースを含めた文字列の検索

大変お世話になっております。

文字列を検索するプログラムを作っていたのですが、スペースを含んだ検索がうまくいきません。単語自体を探し当てる事は出来るのですが、「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;
}
      }
    }
 }
}

投稿日時 - 2005-12-08 07:52:34

QNo.1826410

すぐに回答ほしいです

質問者が選んだベストアンサー

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 ;
}
}
}
}

投稿日時 - 2005-12-08 15:18:37

お礼

ありがとうございました!
本当に助かりました。

投稿日時 - 2005-12-09 03:57:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問