我有一个字符串"(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
修改
我犯了一个错误。因为我发布了部分代码,所以犯了一些错误。请查看更新后的代码
答案 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