这几天做项目需要把多个item的id存储到一个字符串中,保存进数据库。保存倒是简单,只需要判断之前是否为空,如果空就直接添加,非空则拼接个“,”
所以这个字符串的数据结构是这样的 String str = "a,b,c,d";
保存简单了,那么删除指定元素呢?这就有点麻烦了,取网上查了好久,不是js的实现就是其他语言的,所以决心自己写个工具类,看了一上午,其中不乏有看不懂的demo(不是Java)。
这是测试时候写的,已经可以用了,如果不想引入工具类的话,可以复制到你的demo中,前提是字符串的结构和我之前具体相同
1 public staticString delStringElement(String strArray, String removeStr){ 2 String[] stringArray = strArray.split(","); 3 List<String> list = new ArrayList<String>(); 4 for (int i = 0; i < stringArray.length; i++) { 5 list.add(stringArray[i]); 6 } 7 list.remove(removeStr); 8 System.out.println(list); 9 int size =list.size(); 10 String[] array = list.toArray(new String[size-1]); 11 String s = ""; 12 for(int i=0;i<array.length;i++){ 13 if (i == 0) { 14 s +=array[i]; 15 }else{ 16 s += ","+array[i]; 17 } 18 } 19 returns; 20 }
包装成工具类的:
1 packageutils; 2 3 importjava.util.ArrayList; 4 importjava.util.List; 5 6 importorg.junit.Test; 7 8 /** 9 * 10 * <p>Title: DelStringEle.java</p> 11 * <p>Description: 删除如:"a,b,c,d"这种格式的字符串中的不重复元素(如果重复会都删掉一个) 12 * 这个bug还没搞明白是怎么回事,有空更新一下[smile`]</p> 13 * <p>Copyright: Copyright (c) 2017</p> 14 * <p>Blog: http://www.cnblogs.com/hellxz/p/7568298.html</p> 15 * @author东北小狐狸 16 * @date 2017年9月21日 17 * @version1.0 18 */ 19 public classDelStringEle { 20 21 @Test 22 public voidjustForTest(){ 23 String str = "a,b,c,d,e,f,g,g"; 24 delStringElement(str, "f"); 25 } 26 public staticString delStringElement(String strArray, String removeStr){ 27 String[] stringArray = strArray.split(","); 28 List<String> list = new ArrayList<String>(); 29 for (int i = 0; i < stringArray.length; i++) { 30 list.add(stringArray[i]); 31 } 32 list.remove(removeStr); 33 System.out.println(list); 34 int size =list.size(); 35 String[] array = list.toArray(new String[size-1]); 36 String s = ""; 37 for(int i=0;i<array.length;i++){ 38 if (i == 0) { 39 s +=array[i]; 40 }else{ 41 s += ","+array[i]; 42 } 43 } 44 returns; 45 } 46 }
基本就这样了,如果有错误欢迎修改代码,欢迎评论拍砖。