使用java查找文本文件中单词的行号

使用java查找文本文件中单词的行号,java,jakarta-ee,Java,Jakarta Ee,我需要在文本文件中搜索一个单词,并使用java显示行号。如果它多次出现,我需要显示输出中的所有行号。有人能帮我吗?您可以手动存储此信息。无论何时调用BufferedReader的readline(),如果您使用这样的函数,也可以将计数器递增1。例如: public int grepLineNumber(String file, String word) throws Exception { BufferedReader buf = new BufferedReader(new Input

我需要在文本文件中搜索一个单词,并使用java显示行号。如果它多次出现,我需要显示输出中的所有行号。有人能帮我吗?

您可以手动存储此信息。无论何时调用
BufferedReader
readline()
,如果您使用这样的函数,也可以将计数器递增1。例如:

public int grepLineNumber(String file, String word) throws Exception {
    BufferedReader buf = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(file))));

    String line;
    int lineNumber = 0;
    while ((line = buf.readLine()) != null)   {
        lineNumber++;
        if (word.equals(line)) {
            return lineNumber;
        }
    }
    return -1;
}

使用Java类
LineNumberReader
读取文本文件,并调用方法
getLineNumber
查找当前行号


类似的方法可能会奏效:

public ArrayList<Integer> find(String word, File text) throws IOException {
    LineNumberReader rdr = new LineNumberReader(new FileReader(text));
    ArrayList<Integer> results = new ArrayList<Integer>();
    try {
        String line = rdr.readLine();
        if (line.indexOf(word) >= 0) {
            results.add(rdr.getLineNumber());
        }
    } finally {
        rdr.close();
    }
    return results;
}
public ArrayList find(字符串字、文件文本)引发IOException{
LineNumberReader rdr=新的LineNumberReader(新文件读取器(文本));
ArrayList结果=新建ArrayList();
试一试{
String line=rdr.readLine();
如果(行索引of(word)>=0){
add(rdr.getLineNumber());
}
}最后{
rdr.close();
}
返回结果;
}

搜索grep java,你会发现很多关于如何实现这一点的示例。这里有一个(没有行号,但应该很容易修改)不,它是项目的一小部分。要解决手头的问题,请在其中添加一个片段,如果行中包含您要查找的单词,请打印行号。LineNumberReader可能比BufferedReader更方便。@Ted,很好的补充。我将留下代码供参考,因为Simon已经建议了它。如果我打印“结果”,如果该单词在文件中存在不止一次,它会返回所有行号吗?我不明白这一点。返回的列表应该有包含单词的每一行的行号。如果从函数返回null(而不是异常),则会出现严重错误。你能告诉我你的电话号码吗?我和你说的一模一样。问题是它没有进入“if”循环,这就是它返回null的原因。但是这个词在课文里。好的,特德,我解决了。现在“results”打印所有行号,“results”是一个arrayList。现在,如果我想将文本中所有单词的行号打印到一个数组中,这将是一个arrayList数组,那么我如何打印该arrayList数组?@user350129-我不确定您想要的是什么。也许您有一个单词数组,并且希望每个单词都有一个位置数组。这就是你想要的吗?