我正在读取一个文本文件,其格式如下
word
definiton
word
definition
definition
word
definition
所以我需要根据我何时到达这些emtpy行来判断我是否在定义中。问题是,BufferedReader
丢弃了\n
字符,不知何故,将那个空行与String ""
进行比较并不像我想象的那样正确。我该如何着手做这件事呢?
发布于 2012-12-04 15:41:13
"".equals(myString)
(即null
-safe),而不是myString == ""
。在1.6之后的版本中,您可以使用null
-safe)(非
myString.isEmpty()
在上面的
之前,你可以使用myString.trim()
去掉多余的空格
下面是一些代码:
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);
}
}
}
发布于 2012-12-04 15:41:46
如果该行为空,则BufferedReader.readLine()
返回空字符串。
javadoc说:
返回:包含行内容的字符串,不包括任何行终止字符;如果已到达流的末尾,则返回null。
如果看起来没有看到空字符串,或者该行不是空的,或者您没有正确地测试空字符串。
发布于 2012-12-04 15:41:57
line = reader.readLine();
if ("".equals(line)) {
//this is and empty line...
}
我不知道您是如何尝试检查字符串是否为空的,所以我无法解释为什么它不适用于您。您可能使用==
进行比较了吗?在这种情况下,它不起作用,因为==
比较的是引用,而不是对象内容。
https://stackoverflow.com/questions/13706466
复制