我的程序正在读取文本文件并根据文本执行操作。但正文的第一行就有问题。显然它以“”开头。这搞乱了我的startsWith()支票。
为了理解这个问题,我使用了这段代码:
System.out.println(thisLine
+ " -- First char : (" + thisLine.charAt(0)
+ ") - starts with ! : "
+ thisLine.startsWith("!"));
Run Code Online (Sandbox Code Playgroud)
String thisLine是文本文件中的第一行。
它将以下内容写入控制台:
! use ! to add comments. Lines starting with ! are not read. -- First char : () - starts with ! : false
为什么会发生这种情况以及如何解决这个问题?我希望它意识到该行以“!”开头 不是 ””
将我和其他人的评论收集到一个答案中以供后代使用,您的字符串可能包含无法打印的控制字符。尝试
System.out.println( (int)thisLine.charAt(0) )
打印出他们的数字代码或
my_string.replaceAll("\\p{C}", "?");
将控制字符替换为“?”。
System.out.println( (int)thisLine.charAt(0) )为您打印65279,这将是零宽度空间的 Unicode 代码点,不是不可打印的,而是在输出中实际上不可见。(请参阅为什么 出现在我的 HTML 中?)。
要么从文件中删除多余的空格字符,从字符串中删除所有控制字符 ( my_string.replaceAll("\\p{C}", "");) ,要么使用 @arvind 的答案并thisLine = thisLine.trim();在读取之前修剪字符串 ( ) ,以便它在字符串的开头或末尾不包含空格。
编辑:记事本不会显示大多数“特殊”字符。如果您想编辑该文件,请尝试使用十六进制编辑器或更高级版本的记事本,例如 Notepad++。