Java 为什么使用“替换”后长度会减少?
我有一个字符串Java 为什么使用“替换”后长度会减少?,java,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.printl
“(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
编辑
我犯了一个错误。因为我发布了我的部分代码,所以犯了一些错误。请查看更新的代码。我想你的意思是说你想按(“u”)拆分,但你已经编写了
字符串z[]=y.split(“-”);
因此,它将被-
而不是\uuu
所以数组中的两个部分将是
\u3+3)*\u4
及
2)\+\\\
编辑:
在字符串z[]=y.split(“”)
之后,您得到的长度是3
,这是绝对正确的。如下所示:
-->(空白)firstElement
String z[]=y.split("_");
_(先拆分)
-->3+3)*secondElement
String z[]=y.split("_");
_(第二次拆分)
-->4-2)thirdElement
String z[]=y.split("_");
而不是
String z[]=y.split("-");
试试这个
String x = "____";
String z[] = x.split("_");
System.out.println("length " + z.length);
输出长度0
String z[]=y.split("-");
z[0] = "_3+3)*_4";
z[1] = "2)_+_+_";
因此
z.length==2
。我在这里没有看到任何缺陷,除非您想按\u
分割,否则不应使用参数“-”进行分割。请改用“\u”
及
在字符串z[]=y.split(“-”)之后;
而“\uuuuuuu.”split(“\u”)
计算空字符串
因此,
z[]
的长度是2\uuu不是-。这是两个不同的符号替换值是uu除以拆分值是-,您可以围绕“-”字符拆分,而不是“u”字符。如果您打印出z[0]您会发现问题。@njzk2您应该将其作为答案发布。我发布真实代码时出错,请查看新代码。在其他地方存在问题,我认为我的错误在这一部分。但我仍然应该感谢您费尽心思寻找解释