使用替换后为什么长度会减少?

时间:2013-09-06 07:46:59

标签: java

我有一个字符串"(3+3)*(4-2)(+(+("。为了在(存在的地方拆分它,我首先使用replace方法将给定的字符串替换为+然后我想找到它的长度新的数组。在给定的字符串中有5 (所以数组的长度应该是5,但它给了我2.我知道为什么会这样。

String x =String x ="(3+3)*(4-2)(((";
    String y=x.replace("(", "_");
    String z[]=y.split("_");

    System.out.println(y);

    System.out.println("length  "+z.length);

输出

_3+3)*_4-2)___

长度3

修改

我犯了一个错误。因为我发布了部分代码,所以犯了一些错误。请查看更新后的代码

5 个答案:

答案 0 :(得分:2)

我认为你的意思是说你要分开(“_”),但你已经写了

String z[]=y.split("-");

因此它将按-而不是_

进行拆分

所以数组中的两个部分将是

_3+3)*_4

2)_+_+_

修改

String z[]=y.split("_");之后,您获得的长度是3,这是绝对正确的。如下图所示:

- >(空白)firstElement

_ (split on first _ )

- > 3 + 3)* secondElement

_ (split on second_ )

- > 4-2)thirdElement

答案 1 :(得分:1)

String z[]=y.split("_");

而不是

String z[]=y.split("-");

试试这个,

    String x = "____";
    String z[] = x.split("_");
    System.out.println("length  " + z.length);

输出length 0

答案 2 :(得分:1)

你不应该用参数“ - ”拆分。改为使用“_”!

答案 3 :(得分:0)

String z[]=y.split("-");
z[0] = "_3+3)*_4";
z[1] = "2)_+_+_";

所以z.length == 2。我没有看到任何缺陷,除非您想要按_拆分。

答案 4 :(得分:0)

String x ="(3+3)*(4-2)(+(+(";
            ____________________________________
String x-->|        (3+3)*(4-2)(((              | 
           |____________________________________|  
String y=x.replace("(", "_");
            ____________________________________
String y-->|        _3+3)*_4-2)___              | 
           |____________________________________|  

和 在String z[]=y.split("-");之后

z[0]----->3+3)*

z[1]----->4-2)  

"___".split("_")计算空字符串。

所以z[]的长度为2