1

ここまでで、テキスト ファイル内の単一の文字列を検索できるプログラムを作成しました。検索した文字列のインデックスが表示されます。しかし、単一のテキスト ファイルで複数の文字列を検索するにはどうすればよいでしょうか。

これまでのところ、スキャナーを使用して「Alice」と入力すると、出力は次のようになります。

Got a match at line 17

Got a match at line 19

Got a match at line 20

Got a match at line 21

ただし、可能であれば、入力としてアリス、ジョン、スティーブンをスキャナーで検索し、出力を次のようにするにはどうすればよいですか。

Got a match for Alice at line 17

Got a match at John at line 19

Got a match at Steven at line 20

Got a match at Steven at line 21

.

public static void main(String[]args) throws IOException{

    int nnames;
    String[] names;
    String stringSearch = null;

    Scanner scan = new Scanner(System.in);
    //for(int i=1;i<=3;i++){
    stringSearch = scan.nextLine();

    ArrayList<String> words = new ArrayList<String>();
    BufferedReader reader = new BufferedReader(new FileReader("File1.txt"));


    String line;

    while ((line = reader.readLine()) != null) {                
        words.add(line);
    }reader.close();


    Collections.sort(words);
     System.out.println("ArrayList elements after sorting in ascending order : ");
     System.out.println("");
        for(int i=0; i<words.size(); i++)
          System.out.println(words.get(i));


    for(String sLine : words) 
    {
        if (sLine.contains(stringSearch)) 
        {
            int index = words.indexOf(sLine);
            System.out.println("");
            System.out.println("Got a match at line " + index);

        }
     }



    System.out.println(words.size());
    }
4

2 に答える 2

2

if-block を、探しているすべての文字列のループに置き換えます

for(String sLine : words) 
{
    for(String searchWord: searchWords)
    {
        if (sLine.contains(searchWord)) 
        {
            int index = words.indexOf(sLine);
            System.out.println("");
            System.out.println("Got a match of "+searchWord+" at line " + index);
        }
    }
 }
于 2013-01-09T14:07:38.040 に答える
1

これを試して

import java.util.Scanner;
import java.util.ArrayList;
import java.util.*;
import java.io.*;
class x{
public static void main(String[]args) throws IOException{

    int nnames;
    String[] names;
    String stringSearch[] = new String[2];

 //   Scanner scan = new Scanner(System.in);
    //for(int i=1;i<=3;i++){
 //   stringSearch = scan.nextLine();

    stringSearch[0]="hello";   //list of words to search
    stringSearch[1]="world";
    ArrayList<String> words = new ArrayList<String>();
    BufferedReader reader = new BufferedReader(new FileReader("File1.txt"));


    String line;

    while ((line = reader.readLine()) != null) {                
        words.add(line);
    }reader.close();


    Collections.sort(words);
//     System.out.println("ArrayList elements after sorting in ascending order : ");
//     System.out.println("");
        // for(int i=0; i<words.size(); i++)
          // System.out.println(words.get(i));

for(int i=0;i<2;i++){
    for(String sLine : words) 
    {
        if (sLine.contains(stringSearch[i])) 
        {
            int index = words.indexOf(sLine);
            System.out.println("");
            System.out.println("Got a match of "+stringSearch[i] +" at line " + index);

        }
     }}



    System.out.println(words.size());
    }
    }

入力からすべての検索文字列を取得したい場合は、これを試してください

searchString=item to search seperated by ','
String[] splits = searchString.split(",");
于 2013-01-09T14:15:46.733 に答える