2015-10-21 115 views
0

我想读取一个文本文件并将一些所需的值存储为java字符串。如何使用BufferedReader的line.split方法读取Java字符串?

我正在使用Bufferedreader读取和存储值。我插入了一行,其中包含以下内容:可能的值将为

NAME: lastname, firstname *CONTRACTOR* 
NAME: 
NAME: Sapi, Raj J. 
NAME: Alle Peter, Shortley Swara 

从上面我只需要姓氏和名字。有时候这个价值根本就不存在。在那种情况下,我如何验证名称行是否有值?为此,我使用下面的代码抛出Nullpointer异常。

BufferedReader br = new BufferedReader(new InputStreamReader(
      (conn.getInputStream()))); 
    String line; 
    while ((line = br.readLine()) != null) { 
     if (line.contains("CNUM")) { 
      cnum = line.split(" ")[1]; 
      // break; 
     } 
     if (line.contains("NAME")) { 
      name = line.split(" ")[2]; 
     } 
    } 
+0

从线路的投掷NPE? – Rehman

+0

@Rehman - 我在检查line.contains(“Name”)。 –

+0

没办法。再次检查你的线路号码。并发布完整的堆栈跟踪。 –

回答

2

您可能希望这样的事情...

BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); 
    String line; 
    while ((line = br.readLine()) != null) { 
     if (line.contains("CNUM")) { 
      cnum = line.split(" ")[1]; 
      // break; 
     } 
     if (line.trim().startsWith("NAME:")) { 

      line = line.replace("NAME:", ""); 
      line = line.trim(); 
      if (line.contains(",")){ 
       String[] contractorName = line.split(","); 
       String lastName = contractorName[0].trim(); 
       String firstName = contractorName[1].trim(); 
       // use the last name and first name as you wish here. 
      } else { 
       // line doesn't contain a first and last name for contractor. invalid data. 
       continue; 
      } 
     } 
    } 
+0

非常感谢...会尝试这个 –

+0

不确定。仍然显示ArrayIndexOutOfBounds异常。在此之前,我尝试打印出名字和姓氏。它的打印正确。但在此之后给出这个例外。 –

+0

什么数据元素失败?你可以单步执行代码并查看它获取ArrayIndexOutOfBounds异常的数据元素。 – Dale

相关问题