`
class GfG{
public String multiply(String a,String b){
String s = "0.0.0.0";
String[] str = s.split("\\.");
for(String p:str){
System.out.println(p);
}
return "";
}
}
` 我正在拆分“ 0.0.0.0”和“ 0.0.0.0”。 在两种情况下,我都得到相同的字符串数组,即4个“ 0”字符串。 有人可以解释这种拆分如何在上述两种情况下起作用。
答案 0 :(得分:1)
您未收到您认为应该最后返回的空字符串的原因是出于split
的原因。
从文档中
public String[] split(String regex)
此方法的工作方式就像通过调用带有两个参数的split方法 给定的表达式和限制参数为零。尾随为空 因此,字符串不包含在结果数组中
其中的重要部分是因此不包含跟踪空字符串。
答案 1 :(得分:0)
您似乎运行了以下
jshell> "0.0.0.0".split("\\.")
$1 ==> String[4] { "0", "0", "0", "0" }
jshell> "0.0.0.0.".split("\\.")
$2 ==> String[4] { "0", "0", "0", "0" }
您对第一个结果感到满意,但是您想知道为什么最后一个结果不满意
String[4] { "0", "0", "0", "0", "" }
这是一个很好的问题,因为如果点在字符串的开头,您将得到空字符串!
jshell> ".0.0.0.0".split("\\.")
$3 ==> String[5] { "", "0", "0", "0", "0" }
这就是split
的工作方式。如果字符串末尾有定界符,则不会返回空字符串。