Java—从文本中读入值

Java—从文本中读入值,java,parsing,Java,Parsing,好的,我在这里读了很多关于从文本文件中逐行阅读并将其拆分的例子,但我不太确定我是否理解在我的情况下如何做到这一点。我有一个文件,基本上分为三列,如下所示: START 5000 FIND A PLUS B SAVE C STOP A, INT 69 B, INT -420 C, CRAZY 008484342 我要做的是读取这个包含上述

好的,我在这里读了很多关于从文本文件中逐行阅读并将其拆分的例子,但我不太确定我是否理解在我的情况下如何做到这一点。我有一个文件,基本上分为三列,如下所示:

         START  5000
         FIND   A
         PLUS   B
         SAVE   C
         STOP   
 A,      INT    69
 B,      INT    -420
 C,      CRAZY  008484342
我要做的是读取这个包含上述信息的.txt文件。我认为逐行读取文件最好,然后将其拆分为正确的列。我遇到的问题是,第一列并不总是在这里。它是可选的。如果他们都填好了,我几乎可以肯定我可以用这样的东西

 String[] array1 = myLine.split(",");
 String[] array1 = myLine.split(",");
 String[] array2 = array1[1].split(" "); 
我的另一个想法是根据,'分割线,然后根据''再次分割线,但我不确定怎么做。也许是这样的

 String[] array1 = myLine.split(",");
 String[] array1 = myLine.split(",");
 String[] array2 = array1[1].split(" "); 
还有,有没有办法只读取文件并将每一行存储到like(String,String)中,然后只检查int和String?也许是试一试?或者说:

 Scanner input = new Scanner(File);
        while(input.hasNext()){
            String str = input.next();
            try{
                b = Integer.parseInt(str);
             }
我不确定这是否像我做的那样困难,但也许是这样。。。如果您对本主题有任何帮助,我们将不胜感激

在查看了更多代码后,我有以下几点要开始:

      public static void main(String[] args) {

    String file ="TEST.txt";

        try{

            FileReader input = new FileReader(file);
            BufferedReader bufferReader = new BufferedReader(input);

            String line;

            while ((line = bufferReader.readLine()) != null)   {


                // Is this where I would attempt to split the lines?
                System.out.println(line);

            }

            bufferReader.close();

        }catch(Exception e){

            System.out.println("Error while reading file line by line:" + e.getMessage());                      
        }
     }

 }

因此,我成功地读入了文件并将信息显示回输出控制台。现在要分开这些线。。。我将张贴我的工作,因为我去,任何帮助和/或建议将不胜感激!同时也感谢那些已经发表评论帮助分割刺痛的人,我现在正在尝试

使用
split(“+”)
,它将在任意数量的空格上拆分。这是因为
split
处理正则表达式。如果要在任何类型的空格上拆分,也可以使用
split(\\s+)
。在获得数组后,检查它是否有2个或3个元素,并相应地进行处理。

使用
split(“+”)
将在任意数量的空格上拆分。这是因为
split
处理正则表达式。如果要在任何类型的空格上拆分,也可以使用
split(\\s+)
。得到数组后,检查它是否有2个或3个元素,并相应地处理它

嗯。。。我还没有时间回答一个很长的问题。但我建议您阅读一点关于正则表达式(RegEx)的知识,以及它在java中的使用方式。。。我相信这将有助于解决这个问题,以及今后大量类似的问题


试试这个:。。。关于这个。。。如果第一个没有帮助;)

嗯。。。我还没有时间回答一个很长的问题。但我建议您阅读一点关于正则表达式(RegEx)的知识,以及它在java中的使用方式。。。我相信这将有助于解决这个问题,以及今后大量类似的问题


试试这个:。。。关于这个。。。如果第一个没有帮助;)

您可以组合这两个表达式,并且只检查数组的长度。e、 g:

String[] array = line.trim().split("[, ]+");
switch(array.length) {
    case 2: 
        // do something
        break;
    case 3: 
        // do something
        break;
    default:
        // something wrong
        break;
}

行中的
trim()
用于避免第一个元素数组中的空字符串。

您可以组合这两个表达式,只检查数组的长度。e、 g:

String[] array = line.trim().split("[, ]+");
switch(array.length) {
    case 2: 
        // do something
        break;
    case 3: 
        // do something
        break;
    default:
        // something wrong
        break;
}

行中的
trim()
用于避免第一个元素数组中的空字符串。

在第二个示例中添加另一个引号以结束字符串。在第二个示例中添加另一个引号以结束字符串。如果我这样做,带停止符的行的长度不是只有1吗?如果使用扫描仪,则没有更多行。如果最后有一个空行,如果(line==null | | | line.trim().isEmpty()){/*stop*/},您可以在
上停止。如果我这样做,停止的行不是只有长度1吗?如果您使用的是scanner,就没有更多的行了。如果最后有一个空行,可以在
If(line==null | | | line.trim().isEmpty()){/*stop*/}
上停止。