微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

打印出一行内的索引和找到单词的行数

如何解决打印出一行内的索引和找到单词的行数

所以基本上我创建了一个代码来导入一个包含单词的文本文件,当我在代码中输入一个单词时,程序会查找该单词是否在我导入的文本文件中。

我最终想做的是找到索引号(在找到的行内)和找到单词的行号。通过执行

,我可以将代码打印出总文本中的索引号,但不在找到的行内
String indexnum = s1;
System.out.println("Matches at index : " + indexnum.lastIndexOf(s2));

打印出类似的东西

'匹配索引:2949232'

我希望它打印的内容类似于...

'在第 4441 行的索引 26 处匹配'

我怎么能有任何想法......老实说,我的想法已经用完了。

解决方法

您在使用 Files.readString() 吗?我建议使用扫描仪或类似设备逐行进行:

Scanner in = new Scanner(new File(filepath)); // be sure to catch or throw the exception
for (int lineNum = 1; in.hasNextLine(); lineNum++) {
    String line = in.nextLine();
    int index = line.indexOf(s2);
    if (index >= 0) {
        System.out.println("Match found on line " + lineNum + ",column " + (index + 1));
    }
}

但如果您需要将其存储为一大块文本,也许您可​​以利用此版本的 indexOf,它需要一个起始索引来进行搜索。

for (int startIndex = 0,endIndex = 0,lineNum = 1; true; lineNum++) {

    endIndex = s1.indexOf("\n",startIndex);
    String line;
    if (endIndex < 0) {
        // No newline found. Continue to the end of the string.
        line = s1.substring(startIndex);
    } else {
        line = s1.substring(startIndex,endIndex);
    }

    int matchIndex = line.indexOf(s2);
    if (matchIndex >= 0) {
        System.out.println("Match found on line " + lineNum + ",column " + (matchIndex + 1));
    }

    if (endIndex < 0) {
        break;
    }

    startIndex = endIndex + 1;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。