一、借鉴别人:
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; }
运行结果: