Java 从字符串中拆分单个字符

Java 从字符串中拆分单个字符,java,string,Java,String,我正在编写以下程序,将字符从字符串中分离出来,并将其分配给数组 public class Str { public static void main(String[] args) { String str = "hello"; String[] chars = str.split(""); for (int i = 0; i < chars.length; i++) { System.out.println(i

我正在编写以下程序,将字符从字符串中分离出来,并将其分配给数组

public class Str {
    public static void main(String[] args) {
        String str = "hello";
        String[] chars = str.split("");
        for (int i = 0; i < chars.length; i++) {
            System.out.println(i + ":" + chars[i]);
        }
    }
}
我得到一个空字符串作为数组的第一个元素。我希望输出没有空字符串,字符数组的长度是5而不是6。为什么拆分此字符串后会出现空字符

您可以使用以下方法:


至于你的问题,当你在一个空字符串上拆分时,你会得到第一个元素作为空字符串,因为,你的字符串以一个空字符串开始,在每个字符之后,也有一个空字符串

因此,第一次拆分发生在第一个字符之前

 h e l l o
^ ^ ^ ^ ^ ^
"Split location"
将丢弃尾随的空字符串,如中所述:

因此,结果数组中不包括尾随的空字符串

您可以使用以下方法:


至于你的问题,当你在一个空字符串上拆分时,你会得到第一个元素作为空字符串,因为,你的字符串以一个空字符串开始,在每个字符之后,也有一个空字符串

因此,第一次拆分发生在第一个字符之前

 h e l l o
^ ^ ^ ^ ^ ^
"Split location"
将丢弃尾随的空字符串,如中所述:

因此,结果数组中不包括尾随的空字符串

您是否尝试过
字符串
类中的方法

使用此
拆分
字符串的问题是
与字符串中的第一个字符匹配,因此得到一个空字符

以核实这一说法。您可以尝试
str.indexOf(“”)
。这将给您一个值0。如果参数不是作为子字符串出现的,则根据返回-1。

您是否尝试了
字符串
类中的方法

使用此
拆分
字符串的问题是
与字符串中的第一个字符匹配,因此得到一个空字符


以核实这一说法。您可以尝试
str.indexOf(“”)
。这将给您一个值0。如果参数不是作为子字符串出现,则返回-1。

如其他人所述,使用
tocharray()
是执行此类操作的首选方法。由于OP想知道为什么在使用
split(“”
)时第一个字符串是空的,这是因为即使在解析第一个字符之前,空字符串也是第一个匹配项。根据,仅忽略尾随的空字符串,而不忽略前导的空字符串

为了解决这个问题,您可以使用。因此,要使用split并忽略第一个空字符串,您的正则表达式应该是:


str.split(“(?如其他人所述,使用
tocharray()
是执行此类操作的首选方法。因为OP想知道为什么使用
split(”)时第一个字符串为空
,这是因为即使在分析第一个字符之前,空字符串也是第一个匹配项。根据,仅忽略尾随的空字符串,而不忽略前导的空字符串

为了解决这个问题,您可以使用。因此,要使用split并忽略第一个空字符串,您的正则表达式应该是:

str.split(“(?)?
 h e l l o
^ ^ ^ ^ ^ ^
"Split location"