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"
将丢弃尾随的空字符串,如中所述:
因此,结果数组中不包括尾随的空字符串
您是否尝试过字符串类中的方法
使用此“
拆分字符串的问题是”
与字符串中的第一个字符匹配,因此得到一个空字符
以核实这一说法。您可以尝试str.indexOf(“”)
。这将给您一个值0。如果参数不是作为子字符串出现,则返回-1。如其他人所述,使用tocharray()
是执行此类操作的首选方法。由于OP想知道为什么在使用split(“”
)时第一个字符串是空的,这是因为即使在解析第一个字符之前,空字符串也是第一个匹配项。根据,仅忽略尾随的空字符串,而不忽略前导的空字符串
为了解决这个问题,您可以使用。因此,要使用split并忽略第一个空字符串,您的正则表达式应该是:
str.split(“(?)?
String str = "hello";
char[] arr = str.toCharArray();
h e l l o
^ ^ ^ ^ ^ ^
"Split location"