一、借鉴别人:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Test { public static void main(String[] args) { String str = " kk kkk klaf fsaff fsge tg sagh ger fsaga " ; //测试的字符串 String regex = "\\s+" ; //表示一个或多个空格的正则表达式 str = str.trim(); //去掉字符串开头和结尾的空格 String str1 = str.replaceAll(regex, "" ); //去掉所有的空格 String str2 = str.replaceAll(regex, " " ); //把一个或多个空格替换成一个空格 System.out.println(str); System.out.println(str1); System.out.println(str2); } } |
输出结果如下:
1 2 3 | kk kkk klaf fsaff fsge tg sagh ger fsaga kkkkkklaffsafffsgetgsaghgerfsaga kk kkk klaf fsaff fsge tg sagh ger fsaga |
总结:
\s* 表示若干个空格(可以是0个)。
\s+ 表示一个或多个空格
二、我的案例:
有个txt文本,里面有一些字符串,以空格隔开,现在想要读取其中的文本,组成一个数据结构。。
我们发现,里面每行数据是一组,整体又是一组,,字符串之间有若干空格,如LinkedList<LinkedList<String>>
代码:
public LinkedList<LinkedList<String>> getContentFromTxt(String filePath) { LinkedList<LinkedList<String>> linkedList = new LinkedList<LinkedList<String>>(); BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new FileReader(filePath)); String lineString = ""; String[] lineArray = null; String regex = "\\s+"; while ((lineString = bufferedReader.readLine())!=null) { lineArray = lineString.split(regex); if(lineArray.length < 1){ continue; } LinkedList<String> innerList = new LinkedList<>(); for (String str : lineArray) { if("".equals(str) || str==null){ continue; } innerList.add(str); } linkedList.add(innerList); } bufferedReader.close(); fileReader.close(); }catch (Exception e){ System.err.println("异常"); } return linkedList; }
运行结果: