字符串以空字符串 ("") 开头

WVr*_*ock 5 java string text

我的程序正在读取文本文件并根据文本执行操作。但正文的第一行就有问题。显然它以“”开头。这搞乱了我的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

为什么会发生这种情况以及如何解决这个问题?我希望它意识到该行以“!”开头 不是 ””

Buu*_*man 4

将我和其他人的评论收集到一个答案中以供后代使用,您的字符串可能包含无法打印的控制字符。尝试

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++。