从字符串中拆分单个字符

Jai*_*dra 1 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 + ":" + chars[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

0:
1:h
2:e
3:l
4:l
5:o
Run Code Online (Sandbox Code Playgroud)

我得到一个空字符串作为数组的第一个元素.我期望输出没有空字符串,并且chars数组的长度为5而不是6.为什么在分割此字符串后出现空字符?

Roh*_*ain 7

你可以使用String#toCharArray()方法:

String str = "hello";
char[] arr = str.toCharArray();
Run Code Online (Sandbox Code Playgroud)

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

因此,第一个分割发生在第一个字符之前.

 h e l l o
^ ^ ^ ^ ^ ^
"Split location"
Run Code Online (Sandbox Code Playgroud)

将丢弃尾随的空字符串,如文档中所指定:

因此,结尾的空字符串不包含在结果数组中.