我遇到分割功能问题。我不知道它是如何运作的。
这是我的源代码:
// Using println to print out the result
String str = " Welcome to Java Tutorial ";
str = str.trim();
String[] arr = str.split(" ");
for (String c : arr) {
System.out.println(c);
}
//Using print to print out the result
String str = " Welcome to Java Tutorial ";
str = str.trim();
String[] arr = str.split(" ");
for (String c : arr) {
System.out.print(c);
}
第一个是使用println
时的结果,第二个是使用print
时的结果,
我不明白为什么空格出现在println
中,而print
中却没有出现空格。有谁可以帮我解释一下?
答案 0 :(得分:11)
由于字符串中有很多空格,如果查看split函数的输出,结果数组看起来像
""
所以如果你仔细观察它们就是空的String println("")
。
执行print("")
时,它会打印一条没有字符串的行。
然而,当你执行public class TreeviewItem
{
public string Text { get; set; }
public int Value { get; set; }
public bool Collapsed { get; set; }
public TreeviewItem[] Children { get; set; }
}
时,它不再具有该字符串的可见性,并且看起来没有打印出来。
如果要将它们分开,无论它们之间是否有空格,请用空格分隔它们。
最后,trim()不会删除String中的空格。它只能修剪第一个和最后一个空格。
答案 1 :(得分:4)
您正在做的是按每个单独的空白分割。因此,对于字符串中的每个空格,它将被拆分为单独的字符串如果要仅拆分单词,则可以使用空白正则表达式:
String[] arr = str.split("\\s+");
这将解决您正在打印的连续空格的问题。
此外,当您使用print
代替println
时,您的打印值不会延续到下一行。因此,当你加注println("")
时,你只需要换行。
答案 2 :(得分:0)
println()
方法在新行中打印所有内容,但print()
方法在同一行中打印所有内容。
所以,当你按空格(“”)拆分你的字符串时,
对于第一个,字符串分裂为每个空格。因此,每次打印时都会出现新行。您无法看到任何新行,因为您正在打印:""
这个。因为您的代码是:
System.out.println("");
但是对于第二个字符串,字符串是为每个空格分割,但是你使用的是print()
方法,这就是为什么它不会转到新行。
你可以通过正则表达式来解决这个问题。
您可以使用此正则表达式:\\s+
所以,你必须写:
String[] arr = str.split("\\s+");