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