String 的 split(String regex, int limit) 方法 次数,空串

1 问题描述

图片如下

有四个 EditText ,其内容用 @ 符号拼接后作为一个参数传给服务器,需要时请求回显数据.
起初

String joint_string = "1@2@3@4"; // 数字代表对应位置都有数值
String[] result = joint_sting.split("@");//长度为4的的数组,对应每一个 EditText

后来发现,有些地方可能为空

String joint_sting = "@2@3@";//缺少1和4
String[] result = joint_sting.split("@");//数组长度只有3 [ , 2, 3],不能直接一一对应赋值

更极端的情况,全部为空

String joint_sting = "@@@";
String[] result = joint_sting.split("@");//[] 得到空数组

问题解决

使用 split(String regex, int limit) 来分割

limit 参数通过控制分割次数从而影响分割结果
如果传入 n(n>0) 那么字符串最多被分割 n-1 次,分割得到数组长度最大是 n
如果 n = -1 将会以最大分割次数分割
如果 n = 0 将会以最大分割次数分割,但是分割结果会舍弃末位的空串

例子

"@2@3@".split("@",-1);  //[ , 2, 3, ]
"@2@3@".split("@",0);   //[ , 2, 3]
"@2@3@".split("@",2);   //[ , 2@3@]
"@2@3@".split("@",3);   //[ , 2, 3@]
"@2@3@".split("@",4);   //[ , 2, 3, ]
"@2@3@".split("@",5);   //[ , 2, 3, ]

所以对于本例来说,limit = -1 和 limti = 4 都是可以解决问题的

"@@@".split("@",-1);//[ , , , ]
"@@@".split("@",4);//[ , , , ]

猜你喜欢

转载自blog.csdn.net/hepann44/article/details/78140388
今日推荐