最近做工程时,遇到需要循环截取字符串的情况,写一篇日记,记录处理方法。
需求
从数据库取回来的数据格式如下:
西南-零起点-香年广场店-煎饼侠
即 有效字符串1-有效字符串2-有效字符串3 ……。
现在需要根据"-"字符挑选出有效字符串。
java自带的方法如下
String userInfoAll = "西南-零起点-香年广场店-煎饼侠";
String[] strArray= userInfoAll.split("-");
//接着获取需要的数据
System.out.println("数据1:",strArray[0]);
System.out.println("数据2:",strArray[1]);
System.out.println("数据3:",strArray[2]);
System.out.println("数据4:",strArray[3]);
如果从数据库取回来的数据一直都是 有效字符串1-有效字符串2-有效字符串3- ……的格式,则没有任何问题,现在我从数据库取回来的数据是这样的:
西南-零起点--
这里很明显,后面两个数据在数据库是没有查到的,所以显示成了空白。数据库查询如下
--查询该客户所属区域、经销商、门店、销售员
select tz.zone_name, tf.fchs_name, ts.store_name, tsr.selr_name into l_zoneName,l_fchsName,l_storeNme,l_selrNme
from t_customer tc
left join t_zone tz
on tc.zone_id = tz.zone_id
left join t_franchiser tf
on tc.fchs_id = tf.fchs_id
left join t_store ts
on tc.store_id = ts.store_id
left join t_seller tsr
on tc.selr_id = tsr.selr_id
where trim(tc.idcard_no) = trim(i_idCardNo);
--字符串拼接
o_userInfoAll := l_zoneName || '-'|| l_fchsName || '-'|| l_storeNme || '-'||l_selrNme;
很明显,查询结果采用的是左连接,所以说数据可能存在为空的情况,但是此时依然会拼接分隔符"-"。
出现如上问题,我的解决方法如下
判断取回来的有效字符串的个数,然后再取值
java代码如下:
//从服务器取回来的数据
String userInfoAll = (String) map.get("o_userInfoAll");
String[] strArray= userInfoAll.split("-");
String baseInfo = "已存在用户信息:";
System.out.println("从数据库取回来的数据:"+userInfoAll);
//赋值
String zoneName = "区域:"+"--"+";";
String fchsName = "经销商:"+"--"+";";
String storeNme = "门店:"+"--"+";";
String selrNme = "销售员:"+"--"+";";
//循环判断取值
if(strArray.length > 3)
{
zoneName = zoneName.replace("--", strArray[0]);
fchsName = fchsName.replace("--", strArray[1]);
storeNme = storeNme.replace("--", strArray[2]);
selrNme = selrNme.replace("--", strArray[2]);
}else if(strArray.length > 2)
{
zoneName = zoneName.replace("--", strArray[0]);
fchsName = fchsName.replace("--", strArray[1]);
storeNme = storeNme.replace("--", strArray[2]);
}else if(strArray.length > 1)
{
zoneName = zoneName.replace("--", strArray[0]);
fchsName = fchsName.replace("--", strArray[1]);
}else if(strArray.length > 0)
{
zoneName = zoneName.replace("--", strArray[0]);
}else
{
System.out.println("什么也不处理");
}
//拼接输出
String strAll = baseInfo+zoneName+fchsName+storeNme+selrNme;自此,结束。