多个空格的正则表达式

一、借鉴别人:

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;
}
运行结果:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值