Java String.split是否有可能返回一个空的String
是否有可能split
返回一个空String[]
? 我很好奇,因为我想在我的代码中尽可能防御,而不必进行不必要的检查。 代码如下:
String[] parts = myString.split("\\w");
我需要执行空检查之前,我使用parts
后分裂?
它永远不会返回null。 如果你不确定,你应该总是检查方法的javadoc。 例如String#split(String)
说
该方法的工作方式就像调用双参数
split
方法一样
…和String#split(String,int)
说:
如果expression式不匹配input的任何部分,那么结果数组只有一个元素,即这个string。
从Javadoc你也可以找出哪些exception会发生,更重要的是为什么会抛出这些exception。 另外一个非常重要的事情是检查类是否是线程安全的。
我build议您在API不清楚的时候下载Java源代码。 这里的所有答案只是告诉你答案,但你应该真的看到自己。 您可以从这里下载Java源代码(查看页面底部附近)。
通过遵循源代码,你将在String[] Pattern.split(CharSequence input, int limit)
。 返回值来自一个调用了toArray
的非null的ArrayList
。 toArray
不返回null:如果列表为空,则会返回一个空数组。
所以最后,不,你不必检查null。
不,你不需要检查零件上的零位。
拆分方法调用Patter.split方法,在方法的开始执行此操作:
ArrayList<String> matchList = new ArrayList<String>();
并在最后做matchList.toArray()返回一个数组。
所以不需要testing空值。