我是Java初学者,如果这是一个非常简单的答案,请耐心等待。 假设我的代码如下所示:
String str;
String [] splits;
str = "The words never line up in such a way ";
splits = str.split(" ");
for (int i = 0; i < splits.length; i++)
System.out.println(splits[i]);
Java在字符串末尾做了什么?在“路”之后有一个空间;因为在空间之后没有值,Java决定不再分割?
非常感谢!
答案 0 :(得分:1)
根据split(),http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String),
的Java文档split(String r)等效于split(String r,0)方法,它将忽略并且不包含任何空白的尾随空字符串。具体来自文档:
因此,结尾的空字符串不包括在内 阵“。
因此,拆分后数组中的最后一个元素将是“way”
您可以通过执行您提到的代码来确认这一点。
答案 1 :(得分:0)
如果使用split方法,则在分隔符后不会获得任何尾随空格。实施例
class Main
{
public static void main (String[] args)
{
String str;
String [] splits;
str = "The words never line up in such a way "; // some empty string after delimiter at end
splits = str.split(" ");
for (int i = 0; i < splits.length; i++)
System.out.println(splits[i]);
System.out.println("END");
}
}
输出
The
words
never
line
up
in
such
a
way
END
查看末尾分隔符没有拆分字符串。
现在
class Main
{
public static void main (String[] args)
{
String str;
String [] splits;
str = "The words never line up in such a way yeah";
splits = str.split(" ");
for (int i = 0; i < splits.length; i++)
System.out.println(splits[i]);
System.out.println("END");
}
}
输出
The
words
never
line
up
in
such
a
way
yeah
END
在分隔符后看到一个额外的字符串,它也是一个空字符串但不是尾随字符串,因此它将在数组中。
答案 2 :(得分:0)
我一直在关注javadoc及其所说的关于String.split的内容:
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 因此不会在结果数组中包含尾随空字符串。
这个方法似乎用两个参数调用.split:
limit参数控制模式的次数 应用因此会影响结果数组的长度。如果 限制n大于零,那么模式将应用于 大多数n - 1次,数组的长度不会大于n,并且 数组的最后一个条目将包含除最后一个匹配之外的所有输入 分隔符。如果n是非正数,那么该模式将被应用为 尽可能多次,阵列可以有任何长度。如果n为零 那么模式将尽可能多地应用于数组 可以有任何长度,尾随空字符串将被丢弃。
感谢