Java 检查文件中的行是否仅以“开始”@&引用;或-&引用;
我将使用Java 检查文件中的行是否仅以“开始”@&引用;或-&引用;,java,bufferedreader,readline,Java,Bufferedreader,Readline,我将使用BufferedReader()和readLine()读取一个文件。 结果将写入ArrayList 如果以“@”或“–”开头,我将检查.txt中的每一行。 如果不是,则应抛出InvalidFormatException for(String s:Data) { if (!s.startsWith("@") || !s.startsWith("-")) throw new InvalidFormatException("Invalid Format"); } my
BufferedReader()
和readLine()
读取一个文件。
结果将写入ArrayList
如果以“@”或“–”开头,我将检查.txt中的每一行。
如果不是,则应抛出InvalidFormatException
for(String s:Data) {
if (!s.startsWith("@") || !s.startsWith("-"))
throw new InvalidFormatException("Invalid Format");
}
my.txt看起来像:
@1.2.1
- new feature @1.2.0
- new picture
因此,只有当“@”或“-”是行的开头字符时,它才起作用
@1.2.1
- new feature
new picture
这个例子应该抛出一个异常
我每次尝试都会得到例外
是否有隐藏字符?您的条件错误,如果第一个字符不是
'@'
并且它不是'-'
,则要抛出异常。使用以下命令:
if (!s.startsWith("@") && !s.startsWith("-"))
throw new InvalidFormatException("Invalid Format");
顺便说一句,如果您只测试第一个字符,您可以这样做:测试第一个字符,而不检查字符串匹配(在这种情况下,您还必须检查是否有第一个字符:非空):
差不多。您的条件是“如果不以@
开头或不以-
开头”
尝试使用&&
(and)代替:
您正在使用的布尔运算符是或
您的条件将检查它是否以第一个字符开头,,或者如果它不以第二个字符开头,则检查它是否以第二个字符开头
由于要检查的内容不是以这两个开头,因此必须使用和
将代码替换为:
if (!s.startsWith("@") && !s.startsWith("-"))
我用正则表达式修复了它
for(String s:Data) {
if (s.matches("[^@-].*$"))
throw new InvalidFormatException("wrong Format");
}
if (!s.startsWith("@") && !s.startsWith("-"))
for(String s:Data) {
if (s.matches("[^@-].*$"))
throw new InvalidFormatException("wrong Format");
}