我正在尝试这些方法:
# RSpec
# spec/support/factory_girl.rb
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
当#出现时,为什么 if 语句没有突破循环?
答案 0 :(得分:0)
很可能这条线并不完全是"#"例如,它之后可能有一个空格。我建议您查看调试器或编辑器中的行,以确切了解String的字符。
尝试打印以下内容以帮助查看字符串的实际内容。
System.out.println(Arrays.toString(line.toCharArray());
如果您有尾随空格,可以使用trim
if (line.trim().equals(stopChar)) break;
答案 1 :(得分:0)
如果字符串包含其他字符,例如输入$353323058181636,EV,D,T,567888.9,+12C,FFFFE000#
(来自您对@PeterLawrey的回答的答案),请使用以下代码而不是String.equals
:
if(line.contains(stopChr)) break;
如果以结尾停止字符,您也可以使用:
if(line.endsWith(stopChr)) break;
答案 2 :(得分:0)
以下代码正在运行:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = "";
String data = "";
while ((line = br.readLine()) != null) {
data += line;
if (line.contains("#"))
break;
}
此外,您可以使用endsWith()来检查文件的结尾,而不是contains()。 你提出帮助。
答案 3 :(得分:0)
在#
之前获取所有内容BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = "";
String data = "";
while (true)
{
line = br.readLine();
// break if terminated
if (line==null)
break;
// Check : for debugging only
System.err.println("LINE : "+line);
// break if #
if (line.contains("#"))
{
// Get first part, part after, we dont care
int first=line.indexOf('#');
data+=line.substring(0, first);
break;
}
else
data += line;
}
// See the result
System.out.println("DATA:"+data);
答案 4 :(得分:0)
问题解决了。 readLine()函数需要字符串字符<CR>
的结尾。只需更换&#34;#&#34;到&#34; \ n&#34;解决了这个问题。感谢所有伟大的团队。
答案 5 :(得分:-1)
如果输入流来自套接字,则永远不会为null。相反,readLine()
方法将阻止,直到您获得新数据。