类似于:jdbc:mysql://localhost:3306/bill?characterEncoding=utf-8这种格式字符串,想分别将mysql 、 localhost、3306、bill信息从该字符串中提取出来,用该如何提取。
希望大家给点建议和思路
本问题已解决:
本人思路有两种,第一种思路
//第一种方法 /** * * @param tags 所要处理的字符 * @param str 所要处理的字符串 * @return * @throws Exception */ public static List<String> getStrsByTags(String[] tags, String str) throws Exception { int[] index = new int[tags.length]; List<String> result = new ArrayList<String>(); int flag = 0; int cutPoint = 0; // 截取点 String block = ""; while (flag == 0) { System.out.println("循环开始了,flag = " + flag); for (int i = 0; i < tags.length; i++) { index[i] = str.indexOf(tags[i]); } Arrays.sort(index); // 数组进行排序 if (index[(tags.length) - 1] < 0) { // 数组中最大的一项小于零 // 终止while循环 flag = 1; } for (int j = 0; j < index.length; j++) { if (index[j] >= 0) { cutPoint = index[j] + 1; break; } } System.out.println("字符串中最先出现的位置为" + cutPoint + " 最后出现的位置为" + index[(tags.length) - 1]); block = str.substring(0, cutPoint); str = str.substring(cutPoint); result.add(block); // 将字符串添加到list中 } return result; } //第二种方法 /** * * @param tags 字符串中有的标志 * @param str 要处理的字符串 * @param my 将所有的标志都转换为的标志 * @return * @throws Exception */ public static List<String> getByTags(String[] tags,String str,String my)throws Exception{ List<String> result = new ArrayList<String>(); for(String tag :tags){ str = str.replaceAll(tag, my); } String[] strs = str.split(my); for(String s :strs){ //剔除为空的数据 if(s!=null && s!="" && !s.isEmpty()){ result.add(s); } } return result; } //测试 public static void main(String[] args){ String[] strs= {"/",":","[?]"}; String str = "jdbc:mysql://localhost:3306/bill?characterEncoding=utf-8"; try{ List<String> list = getByTags(strs, str,","); for(String result : list){ System.out.println(">>>>>"+result); } }catch (Exception e) { e.printStackTrace(); // TODO: handle exception } }
方法一 该种方法还没有真正的获取所需要的字符串,需要对获取的字符串再进行一些筛选,比如便利这些数据,将原有的那些字符替换为“” ,这个思路就是不断的去截取这个字符串,一直截取到不能再截取为止,并将截取下来的字符串保存下来
方法二是将所有特殊字符全部替换为想要的字符,通过字符获取数组,并过滤掉数组中的杂质
时间: 2024-10-20 23:17:07