Java 当围绕空格(\s+;)拆分时,第一个结果字符串的第一个索引具有空的第0个字符

Java 当围绕空格(\s+;)拆分时,第一个结果字符串的第一个索引具有空的第0个字符,java,regex,string,Java,Regex,String,我完全不知所措。在文件的第一行上运行line.split(\\s+”)时,数组中的第一个值具有空字符 在equals测试不断失败后,我启动了调试器,文件中单词的第一个字符的第一个字符是空的(不是空格,而是空的) 如果您能解释这是如何发生的,并提供解决方案,我们将不胜感激。请先删除前导/尾随空格 line = line.trim(); 首先删除前导/尾随空格 line = line.trim(); 只要删除数组的第一个条目,如果它总是给出这样的结果。如果位置0为null或“”或该值是什么,则

我完全不知所措。在文件的第一行上运行
line.split(\\s+”)
时,数组中的第一个值具有空字符

在equals测试不断失败后,我启动了调试器,文件中单词的第一个字符的第一个字符是空的(不是空格,而是空的)


如果您能解释这是如何发生的,并提供解决方案,我们将不胜感激。

请先删除前导/尾随空格

line = line.trim();

首先删除前导/尾随空格

line = line.trim();

只要删除数组的第一个条目,如果它总是给出这样的结果。如果位置0为null或“”或该值是什么,则可以执行测试


然后将它转换为一个静态函数,然后看不见,想不起来。

只要删除数组的第一个条目,如果它总是给出这样的结果。如果位置0为null或“”或该值是什么,则可以执行测试

然后把它变成一个静态函数,看不见,记不住。

没有什么比得上“空字符”

空白被定义为:
[\t\n\x0B\f\r]

因此,位置0处的字符很可能是一个不可见字符,不属于上面设置的“空白”部分

您可能希望将有问题的字符传递给unicode代码点表,并查看该表,以了解它是什么字符。

没有什么比“空字符”更好的了

空白被定义为:
[\t\n\x0B\f\r]

因此,位置0处的字符很可能是一个不可见字符,不属于上面设置的“空白”部分


您可能希望将有问题的字符传递给unicode代码点表,并查看该表以了解它是什么字符。

我必须复制第一个字符的内容,并查看十六进制代码以了解发生了什么

该值是一个
零宽度不间断空间(U+FEFF)
。由于Java的trim()只将空格定义为,因此未捕获该字符


最后,我在代码中为这个字符添加了一个特殊的大小写。

我必须复制第一个字符的内容,并查看十六进制代码以了解发生了什么

该值是一个
零宽度不间断空间(U+FEFF)
。由于Java的trim()只将空格定义为,因此未捕获该字符


最后,我在代码中为该字符添加了一个特殊的大小写。

检查此字符。请向我们显示您的代码。您的文件中可能有一些不可打印的空白字符。没有什么比“空字符”更好的了。这很可能是一些空白字符。嗯,这是一种不可见的字符,但不是空字符。检查这一个。请向我们展示您的代码。您的文件中可能有一些不可打印的空白字符。没有什么比“空字符”更好的了。它很可能是一些空白字符。嗯,它是某种不可见的,但不是空字符。
char
是原始字符。因此
char[0]
处的值不能为
null
,也不能为空
字符串(不兼容类型)。很可能是一些空白字符。对不起,我对Java不太熟悉。如果是字符,那么“?
就是无效的<代码>字符c=''
无法编译。没有什么比空字符更好的了
char c=null
不会编译,因为
char
是原语。这就是为什么这里讨论的字符必须是某种(不可见的)字符。
char
是基本字符。因此
char[0]
处的值不能为
null
,也不能为空
字符串(不兼容类型)。很可能是一些空白字符。对不起,我对Java不太熟悉。如果是字符,那么“?
就是无效的<代码>字符c=''
无法编译。没有什么比空字符更好的了
char c=null
不会编译,因为
char
是原语。这就是为什么这里讨论的一定是某个(不可见的)角色。+1用于查找不可见的角色并让我们知道它是哪一个:)+1用于查找不可见的角色并让我们知道它是哪一个:)