如何在 Java 中优雅地分割 String 字符串

时间:2021-05-02

分割字符串是 Java 编程中常用的操作,相信很多同学都知道,String 类中的 split 方法可以进行字符串分割,然而日常使用起来却仅限于 str.split( "-"),其中 "-"为分隔符。其实 split 方法的功能非常强大,可以更优雅地使用它分割字符串。

使用方法

split 方法的一种声明为,

  • publicString[]split(Stringregex)
  • 其中 regex 指的是正则表达式分隔符,我们平时使用单个字符作为分隔符,其实可以看作特殊的正则表达式,特殊之处在于这种表达式只匹配它自身,如 "-" 只匹配 "-", 示例如下:

  • Stringstring="86-15003455666";
  • String[]parts=string.split("-");
  • Stringpart1=parts[0];//86
  • Stringpart2=parts[1];//15003455666
  • split 方法的另一个声明为:

  • publicString[]split(Stringregex,intlimit)
  • regex 指的是 正则表达式分隔符,limit 指定的则是分割的份数,举个例子就明白了

  • Stringstring="004-556-42";
  • String[]parts=string.split("-",2);//限定分割两份
  • Stringpart1=parts[0];//004
  • Stringpart2=parts[1];//556-42
  • 而在某些场景下,我们可能想要在结果中保留分隔符,这也是可以做到了设置分隔符与分割后左侧的结果相连,

  • Stringstring="86-15003455666";
  • String[]parts=string.split("(?<=-)");
  • Stringpart1=parts[0];//86-
  • Stringpart2=parts[1];//15003455666
  • 设置分隔符与分割后右侧的结果相连,

  • Stringstring="86-15003455666";
  • String[]parts=string.split("(?=-)");
  • Stringpart1=parts[0];//86
  • Stringpart2=parts[1];//-15003455666
  • 机智的你可能已经发现了,其实分割方法的精妙之处,全在于正则表达式 regex 的设置,正则表达式还是要好好学习的!

    妙用正则表达式

    在实际的工作场景中,对于要分割的字符串,我们在分割之前,往往需要校验下它的格式,只有符合我们的要求,我们才对它进行拆分处理。而使用 Pattern 类加 Matcher 类,可以使字符串的格式识别和分割操作一气呵成:

  • publicclassSplitExample{
  • //\d代表数字,+代表出现一次或多次。所以(\\d+)-(\\d+)匹配用"-"相连的两个数字串
  • //Pattern对象是正则表达式的编译表示
  • privatestaticPatterntwopart=Pattern.compile("(\\d+)-(\\d+)");
  • publicstaticvoidcheckString(Strings)
  • {
  • //Matcher对象对输入字符串进行解释和匹配操作
  • Matcherm=twopart.matcher(s);
  • if(m.matches()){
  • //m.group(1)和m.group(2)存储分割后的子串
  • System.out.println(s+"matches;firstpartis"+m.group(1)+
  • ",secondpartis"+m.group(2)+".");
  • }else{
  • System.out.println(s+"doesnotmatch.");
  • }
  • }
  • publicstaticvoidmain(String[]args){
  • checkString("123-4567");//匹配
  • checkString("s-tar");//字母序列,不匹配
  • checkString("123-");//"-"右侧的数字串为空,不匹配
  • checkString("-4567");//"-"左侧的数字串为空,不匹配
  • checkString("123-4567-890");//存在两个"-",不匹配
  • }
  • }
  • 上述程序的运行结果为:

    原文地址:https://mp.weixin.qq.com/s?__biz=MzI2NTAzNzgxNw==&mid=2247504499&idx=1&sn=159a9653575fd3a95176e6b21d3b67b7&chksm=eaa1e0e5ddd669f32ffab4380a88ae4db1eef5805cde4962c97c93563029fc6ec29cd7698011&mpshare=1&s

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章