1

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

         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, String 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());                      
        }
     }

 }

因此,我成功地读取了文件并将信息显示回输出控制台。现在分隔线......我会随时发布我的工作,任何帮助和/或建议将不胜感激!还要感谢那些已经评论过帮助分裂刺痛的人,我现在正在尝试这个!

4

3 回答 3

1

您可以组合这两个表达式并且只检查数组的长度。例如:

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

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

于 2013-10-22T15:55:41.067 回答
0

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

于 2013-10-22T15:51:22.493 回答
0

嗯......我还没有时间来回答一个长篇大论。但我建议你阅读一些关于正则表达式(RegEx)以及它在java中的使用方式......我相信这将帮助你解决这个问题以及大量未来这样的问题......

试试这个:http ://www.vogella.com/articles/JavaRegularExpressions/article.html ...这个http://docs.oracle.com/javase/tutorial/essential/regex/ ...如果第一个没有帮助;)

于 2013-10-22T15:54:13.583 回答