我在更新数据库列的时候有这样一个问题。数据库某列存的数据是以(10001,100002,100003)这种方式存的,存的都是一些用户的id,是以都号隔开的这种形式存的,当我删除某个人员的时候,这列也要更新一下,更新是跟新成功了,但是逗号怎么去掉比如我删除id为10001的用户,数据库的列跟新成功之后就变成(,10002,10003),就是这个逗号没有去掉,请问要用什么方式去掉啊
调试欢乐多
public boolean update(List<?> userID) {
boolean b = false;
String hql;
if (userID != null && userID.size() > 0) {
for (int i = 0; i < userID.size(); i++) {
hql = "SELECT s FROM tables WHERE s.memberId LIKE '%"
+ userID.get(i) + "%' AND s.id LIKE '4%'";
List<tables> list = this.getHibernateTemplate().find(hql);
if (list.size() != 0) {
for (int j = 0; j < list.size(); j++) {
String str = (String) list.get(j).getMemberId();
int index = str.indexOf((String) userID.get(i));
if (index != -1) {
str = str.replaceAll((String) userID.get(i), "");
list.get(j).setMemberId(str);
try {
this.getHibernateTemplate().update(list.get(j));
b = true;
} catch (DataAccessException e) {
e.printStackTrace();
b = false;
}
}
} } else {
b = true;
}
}
}
return b;
}
这行后面你可以写个方法判断字符","是否在 字符串的开头 或者结尾出现 并把开头或结尾的","去掉
str = str.replaceAll((String) userID.get(i), "");
str = str.replaceAll(str, "(,", "("); //去掉最前一个,
str = str.replaceAll(str, ",)", ")"); //去掉最后一个,
中间的没去掉呢
要不加 str = str.replaceAll(str, ",,", ")"); 要不这样
str = str.replaceAll((String) userID.get(i)+",", "");
str = str.replaceAll(","+(String) userID.get(i), "");
// 判断str的开头是不是以逗号开头的,如果是,返回true
boolean start = str.startsWith(comma);
// 当start结果为true时,通过subString截取str,从索引1开始(字符串索引重0开始),截取到最后
if (start) {
str = str.substring(1, str.length());
}
// 判断str结尾是不是以头号结尾,如果是,返回true
boolean end = str.endsWith(comma);
// 当end的结果为true时,通过subString截取str,从索引0开始(字符串索引重0开始),截取到倒数第二位
if (end) {
str = str.substring(0, str.length() - 1);
}
String commas = ",,";
// 判断截取后的str中间存不存在连续两个逗号结尾的短字符串,如果不包含返回-1
int commaNum = str.indexOf(commas);
// 当commaNum的结果不为-1时,将连续两个逗号的短字符串替换为一个逗号
if (commaNum != -1) {
str = str.replaceAll(commas, ",");
}