【问题标题】:Simple Java Textfile not parsing Correctly简单的 Java 文本文件未正确解析
【发布时间】:2015-11-11 04:04:48
【问题描述】:

我有一个简单的文本文件:

type = "hello"
number = 66

type = "hey"
number = 77

我基本上只是检查是否在文本文件中找到字符串“type”,如果是,我还想获取值“hello”和“hey”,即类型。但是,从这个意义上说,我的程序根本不起作用,当检查文件中是否存在“类型”时,它总是打印“否”。

public static void main(String[] args) {
    if(args.length == 1)
        parseText(argv[0]); // call with textfile name
}
public void parseText(String inPath) {
        try {
        Scanner s = new Scanner(inPath);
        while(s.hasNextLine()) {
            if("type".equals(s.nextLine().trim()))
                System.out.println("Yes");
            else {
                System.out.println("no");
            }

        }
        }catch (Exception e ) {
            System.out.println("\nFILE NOT FOUND");
        }

}

任何帮助将不胜感激。

【问题讨论】:

  • 如果你想从一个文件中读取,你至少需要用new Scanner(new File(inPath));打开一个文件。就目前而言,您只是在扫描命令行中传入的字符串。

标签: java parsing text


【解决方案1】:
if("type".equals(s.nextLine().trim()))

您确实想将文件中的数据行读入字符串,以便您可以对字符串进行处理。

您想知道该行是否以“类型”开头:

String line = s.nextLine()

if (line.startsWith("type"))
{
    String value = line.substring(8);
    System.out.println(value);
}

【讨论】:

  • 好的,但我仍然对如何获得“hello”或“hey”值感到困惑?
【解决方案2】:

检查该行是否以“type”开头(不等于“type”)。

if("type".equals(s.nextLine().trim()))

应该是这样的

String line = s.nextLine().trim();
if (line.startsWith("type"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多