首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断是否已使用BufferedReader读入了空行?

如何判断是否已使用BufferedReader读入了空行?
EN

Stack Overflow用户
提问于 2012-12-04 23:38:43
回答 5查看 38.7K关注 0票数 6

我正在读取一个文本文件,其格式如下

代码语言:javascript
运行
复制
word
definiton

word
definition
definition

word
definition

所以我需要根据我何时到达这些emtpy行来判断我是否在定义中。问题是,BufferedReader丢弃了\n字符,不知何故,将那个空行与String ""进行比较并不像我想象的那样正确。我该如何着手做这件事呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-04 23:41:13

  1. 确保使用:"".equals(myString) (即null-safe),而不是myString == ""。在1.6之后的版本中,您可以使用null-safe)

(非

  • )使用myString.isEmpty()

在上面的

之前,你可以使用myString.trim()去掉多余的空格

下面是一些代码:

代码语言:javascript
运行
复制
public void readFile(BufferedReader br) {
  boolean inDefinition = false;
  while(br.ready()) {
    String next = br.readLine().trim();
    if(next.isEmpty()) {
      inDefinition = false;
      continue;
    }
    if(!inDefinition) {
      handleWord(next);
      inDefinition = true;
    } else {
      handleDefinition(next);
    }
  }
}
票数 19
EN

Stack Overflow用户

发布于 2012-12-04 23:41:46

如果该行为空,则BufferedReader.readLine()返回空字符串。

javadoc说:

返回:包含行内容的字符串,不包括任何行终止字符;如果已到达流的末尾,则返回null。

如果看起来没有看到空字符串,或者该行不是空的,或者您没有正确地测试空字符串。

票数 5
EN

Stack Overflow用户

发布于 2012-12-04 23:41:57

代码语言:javascript
运行
复制
line = reader.readLine();
if ("".equals(line)) {
   //this is and empty line...
}

我不知道您是如何尝试检查字符串是否为空的,所以我无法解释为什么它不适用于您。您可能使用==进行比较了吗?在这种情况下,它不起作用,因为==比较的是引用,而不是对象内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13706466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档