0.0.0.0的分割方法的工作。 && 0.0.0.0

时间:2019-05-25 18:44:44

标签: java string

`

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”字符串。 有人可以解释这种拆分如何在上述两种情况下起作用。

2 个答案:

答案 0 :(得分:1)

您未收到您认为应该最后返回的空字符串的原因是出于split的原因。

从文档中

public String[] split(String regex)
  

此方法的工作方式就像通过调用带有两个参数的split方法   给定的表达式和限制参数为零。尾随为空   因此,字符串不包含在结果数组中

其中的重要部分是因此不包含跟踪空字符串

参考:Official documentation

答案 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的工作方式。如果字符串末尾有定界符,则不会返回空字符串。

Java String split removed empty values重复,详细说明。