如何在Java中解析行尾字符串

时间:2013-07-04 09:40:32

标签: java

我想阅读一个包含一些字符串的文本文件,例如:

abc  
def

ghi  
jkl

mno  
pqr

我使用while循环只读取一对并将它们存储在arraylist中。我想在遇到空行(\n)时立即停止,例如在def之后。但我的代码不会工作......我做错了什么?

while(!"\n".equals(sCurrentLine)) {
     -- do stuff --
}

5 个答案:

答案 0 :(得分:8)

如果你是逐行阅读,那么空行是空行(""),而不是"\n"这是长度为1的字符串

在这种情况下,您可能还需要检查没有更多行 BufferedReader.readLine()返回null

答案 1 :(得分:2)

你犯了一个大错:你假设换行符是\n,这并不总是正确的。根据操作系统的不同,它可以是CRLFCRLF

您可以按照自己的方式进行检查,但是您必须针对所有这三种可能性进行检查。

您还可以使用String.trim(),然后比较字符串"".equals(var.trim())

答案 2 :(得分:2)

 while(!"".equals(sCurrentLine)) {
 -- do stuff --
 }

这会对你有所帮助

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class AddToArrayList {
public static void main(String[] args) throws IOException {
    Scanner sc=new Scanner(new File("D:\\Text.txt"));
    ArrayList<String> str=new ArrayList<>();
    String s=null;
    while (sc.hasNext()){
        s=sc.nextLine();
        if(s.equals("")){
             continue;
        }
        str.add(s);
    }
}
}

答案 3 :(得分:1)

你可以做这样的事情

假设1,你要添加跳过空行的对。

    String line = null;
        while ((line = br.readLine()) != null) {
          //when we encounter a empty line we continue
          //the loop without doing anything
          if (line.trim().isEmpty()) {
               continue;
          }
          //add to list
        }

假设2,你想在第一个空行退出

 String line = null;
   while ((line = br.readLine()) != null) {
      //when we encounter a empty line we exit the loop
      if (line.trim().isEmpty()) {
          //break the loop
          break;
      }
      //add to list
    }

希望这有帮助。

答案 4 :(得分:0)

您应该使用System.getProperty("line.separator")而不是使用系统相关的字符串。