使用扫描仪从字符串读取文件到字符串

时间:2019-07-03 19:09:58

标签: java string java.util.scanner

我正在创建一个程序,我必须在其中读取特殊的文本文件。我从指定的单词到另一个指定的单词(不包括这些单词)阅读文本时遇到问题。使用扫描仪是解决此问题的好方法吗? 我的意思是这样的:

“ text1

text2

text3

text4

text5”

我想从中获取带有“ text2 text3 text4”的字符串。

我尝试使用useDelimeter,但无法弄清楚如何将其应用于这种情况。我创建了一种可以跳过行的方法,但是从长远来看,这并不是一个好的解决方案,它仅适用于一个指定的文件。

这是我想在这里做的方法之一

private String readFile3(File file) {
        try {
            Scanner sc = new Scanner(file);
            //skipLine(sc, 8);
            sc.useDelimiter("R");

            String sentence = sc.next();
            textAreaD.setText(sentence);

        } catch (FileNotFoundException e) {
            System.out.println("No file");
        }       
        return null;
    }

1 个答案:

答案 0 :(得分:0)

怎么样呢?

private String readFile3(File file) {
        try {
            Scanner sc = new Scanner(file);
            boolean save = false;
            String sentence = "";
            String temp = "";

            while (sc.hasNextLine()) {
                temp = sc.nextLine();
                if (sentence.contains("text1")) {
                    if (!save) {
                        temp = sc.nextLine();
                    }
                    save = true;
                }
                if (sentence.contains("text5")) {
                    save = false;
                }
                if (save) {
                    sentence = sentence + temp;
                }
            }
            // skipLine(sc, 8);
            //sc.useDelimiter("R");
             sentence = sentence.replaceAll("\\n", "");
             textAreaD.setText(sentence);

        } catch (FileNotFoundException e) {
            System.out.println("No file");
        }
        return null;
    }

应读出“ text1”和“ text5”之间的所有字符串。也许您还需要进行更多格式化,并检查“ text1”是否出现了多次,如果您也想保存它,但是我希望它能对您有所帮助。