zoukankan      html  css  js  c++  java
  • java中split任意数量的空白字符

    java程序中经常通过split截取字符串来取得其中的关键字。但是由于其中不同操作系统或者不同作者的习惯,经常会出现不同数量的空格,例如"   "(3个空格);或者出现制表符、Tab符号"    "(Tab键)。因此合理的通过任意数量的空白字符切割获取关键字非常重要。下面是我一步步摸索找出解决方案的过程。结局很重要,整个的思维过程也是相当有意义的。

       1. 问题的提出:

    String sample = "a  b c    d";
    String[] arrays = sample.split(" ");
    for(String s : arrays)
    {
        System.out.println(s);
    }

       由于字符串中出现了不定个数的空格,所以截取的字符串数组中肯定会出现空格字符串,结果如下:

       100249510.png

       利用java正则表达式的贪婪原则,提出解决方法:

       

    String sample = "a  b c    d";
    String[] arrays = sample.split(" +");
    for(String s : arrays)
    {
        System.out.println(s);
    }

       结果:

    101130329.png

       2.另一个问题的提出:

       

    id userName sex
    0  root     male
    1  user1    female

       我要从上述文件读取每一行字符串并且split,但是由于格式化以及各人之间的习惯,每一行中间都充斥着空格和Tab键,因此第一种解决方案无法运用到这上面去。想到正则表达式中有“s”代表任意空白字符,这里便可以解决问题:

       

    String sample1 = "0  root       male";
    String sample2 = "1  user1  female";
    String[] arrays = sample1.split("\s+");
    for(String s : arrays)
    {
        System.out.println(s);
    }
    System.out.println("----------------------");
    arrays = sample2.split("\s+");
    for(String s : arrays)
    {
        System.out.println(s);
    }

       结果:

    102314640.png

       3.字符串前后含有空白字符的情况:

       

    String sample1 = "  0  root     male";
    String[] arrays = sample1.split("\s+");
    for(String s : arrays)
    {
        System.out.println(s);
    }

       这时候打印结果会在前面多一个空的字符串,解决方法是在split之前先进行trim()操作,由于trim()支持级联调用,可以写成下面的方式:

    String sample1 = "  0  root     male";
    String[] arrays = sample1.trim().split("\s+");
    for(String s : arrays)
    {
        System.out.println(s);
    }

       结果Ok了。

  • 相关阅读:
    EF Code First一对一、一对多、多对多关联关系配置
    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
    ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
    ASP.NET Core 1.0 入门——Application Startup¶
    ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求
    EF Code First 学习笔记:约定配置
    ASPNET CORE初探
    EntityFramework 7.0之初探【基于VS 2015】(
    ASP.NET Core 开发
    sqlite3 外键作用原理和使用方法
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/9304982.html
Copyright © 2011-2022 走看看