拆分或解析java

时间:2016-08-24 11:53:24

标签: java arrays

我有一个文件sample.txt,其内容将是

12345#ABCDEF#12345#ADCDE

12345#ABCDEF#12345#ADCDE

FHJI

KLMN

OPQ

12345#ABCDEF#12345#ADCDE

现在我想根据#

拆分/解析文件

我的输出应该是

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE

        FHJI

        KLMN

        OPQ

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE

我写的如下

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {
    String line[] = sCurrentLine.split("#");
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
    }

如果它只有一行就可以工作了 或者sample.txt在下面

12345#ABCDEF#12345#ADCDE

12345#ABCDEF#12345#ADCDE

它不适用于最高声明的示例。

请帮帮我。

谢谢。

3 个答案:

答案 0 :(得分:1)

这一行

String line[] = sCurrentLine.split("#");

如果您解析的行中没有n将崩溃,则会将字符串拆分为#个片段。为了解决问题,您有两个选择:

  • 修复文件
  • 在分配之前检查数组的长度以避免AIOOBE

    while ((sCurrentLine = br.readLine()) != null) {
        String line[] = sCurrentLine.split("#");
    
        Test1 = line[0];
        Test2 = line.lenght > 1 ? line[1] : "";
        Test2 = line.lenght > 2 ? line[2] : "";
        Test2 = line.lenght > 3 ? line[3] : "";
    
        System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
     }
    

答案 1 :(得分:1)

您必须检查是否可以将字符串拆分为您想要的部分

String sCurrentLine;
String Test1 = "";
String Test2= "";
String Test3= "";
String Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {
    String line[] = sCurrentLine.split("#");
    if (line.length >= 4) {
        Test1 = line[0];
        Test2 = line[1];
        Test3 = line[2]
        Test4 = line[3];
    } else {
         Test4 = line[0] + "\n";
    }
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
}

答案 2 :(得分:0)

执行类似的操作,检查字符串中是否有足够的段。

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {

  String line[] = sCurrentLine.split("#");
  if(line.length >= 4){
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
  }
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
}