如何从BufferedReader中删除空行

时间:2015-12-07 12:59:08

标签: java

我正在尝试从串行调制解调器获得响应并将其存储到BufferedReader中。这是输出:

  

imsiAT + CIMI
  IMSI
  imsi510011130957977
  IMSI
  imsiOK

我希望使用以下代码获取" 510011130957977" 的值:

os.print("AT+CIMI");
os.print("\n");                
String responInput20000;             
try {
    while ((imsi = reader.readLine())!=null) {
        System.out.println("imsi"+imsi);
        txtOutput.insert(imsi.replace("\n", "").replace("\r", "").replace("OK", "").replace("AT+CIMI", "")+"\n", 0);
        lblImsi.setText(imsi.replace("\n", "").replace("\r", "").replace("OK", "").replace("AT+CIMI", "").replace("\n\r",""));
        if(imsi.equals("OK")){
            break;   
        }   

JTextArea仍然包含两个空行。也许还有其他解决方案吗?

3 个答案:

答案 0 :(得分:0)

如果您不使用replace()方法满足您的需求,那将会更容易(也更快):

while ((imsi = reader.readLine()) != null) {
    if (!imsi.isEmpty() && !imsi.equals("OK") && !imsi.equals("AT+CIMI") {
        txtOutput.insert(imsi);
        lblImsi.setText(imsi);
    }
}

无需替换这些字符串(您可以省略它们)。自从使用readLine()阅读后,您的字符串中找不到任何换行符(\r\n)!

答案 1 :(得分:0)

您可以创建这样的方法,消耗所有读者内容并发现您需要的值:

private static String getValue(BufferedReader reader) throws IOException {
    String value = null;

    for (String line = reader.readLine(); line != null; line = reader.readLine()) {

        String str = line.substring("imsi".length());

        if ("".equals(str)) {
            continue;
        }

        if ("OK".equals(str)) {
            break;
        }

        value = str;
    }

    return value;
}

答案 2 :(得分:0)

您可以尝试使用匹配器匹配正则表达式(在这种情况下为数字)

fclose($fp);

这对我有用..