在JAVA中读取文件,等于不';行不通
我有一个txt文件,我读了它。 它是这样说的:在JAVA中读取文件,等于不';行不通,java,file,equals,Java,File,Equals,我有一个txt文件,我读了它。 它是这样说的: CONTRACT { CODE 1 SERVICE "Pro" NAMESURNAME "Takis Papadopoulos" PHONENUMBER 6980021739 DATE "19/3/2007" TYPE Internet DISCOUNT 10 MONTHLY_USAGE{ MB_USED 200 } } 我创建了一个BufferedReade
CONTRACT
{
CODE 1
SERVICE "Pro"
NAMESURNAME "Takis Papadopoulos"
PHONENUMBER 6980021739
DATE "19/3/2007"
TYPE Internet
DISCOUNT 10
MONTHLY_USAGE{
MB_USED 200
}
}
我创建了一个BufferedReader,并使用line=read.readLine()方法。但问题是,当涉及到这段代码时:
if(line.trim().startsWith("SERVICE ")){
tmp_service = line.trim().substring(8);
System.out.println(tmp_service);//Prints "Pro"
if(tmp_service.equals("Pro")){
System.out.println("1");//Never gets in
}else if(tmp_service.equals("Internet Family")){
System.out.println("2")
}else{
System.out.println("3");//Prints this
}
count++;
System.out.println(tmp_service);//Prints "Pro"
}
它总是打印“3”,即使equals应该是“true”,它也不是。我还尝试了“startsWith()”,但它也不起作用。您的文本中有引号,因此您需要将它们包含在支票中
if(tmp_service.equals("\"Pro\"")){
在我看来,一个更好的解决方案是删除所有的“”,如果你希望出现很多情况,最好是概括你的案例你尝试将“Pro”与“Pro”进行比较。别忘了转义引号
在Java中,转义字符是反斜杠(\)。
您的解决方案:if(tmp\u service.equals(“\”Pro\”)
:
前跟反斜杠(\)的字符是转义序列,对编译器具有特殊意义。[…]当在打印语句中遇到转义序列时,编译器会相应地对其进行解释。例如,如果要在引号中加引号,则必须在内部引号中使用转义序列\“。
打印句子
She said "Hello!" to me.
你会写:
请提供详细信息,而不仅仅是片段。这样帮助你总是容易得多,而且这个问题对未来的读者更有价值。引导和不可见的空格呢?可能
tmp\u服务
包含“Pro”
?如果格式始终相同,则可以使用regex或某个string.split,并且可以将所有这些转换为对象。甚至检查格式和设置默认值。现在它不打印任何内容:(抱歉,它不等于从它开始工作,非常感谢!
System.out.println("She said \"Hello!\" to me.");