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);//[ , , , ]