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

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

成都创新互联公司专注于企业网络营销推广、网站重做改版、昌平网站定制设计、自适应品牌网站建设、H5建站成都做商城网站、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为昌平等各大城市提供网站开发制作服务。

使用方法

split 方法的一种声明为,

 
 
 
 
  1. public String[] split(String regex) 

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

 
 
 
 
  1. String string = "86-15003455666"; 
  2. String[] parts = string.split("-"); 
  3. String part1 = parts[0]; // 86 
  4. String part2 = parts[1]; // 15003455666 

split 方法的另一个声明为:

 
 
 
 
  1. public String[] split(String regex, int limit) 

regex 指的是 正则表达式分隔符,limit 指定的则是分割的份数,举个例子就明白了

 
 
 
 
  1. String string = "004-556-42"; 
  2. String[] parts = string.split("-", 2);   // 限定分割两份 
  3. String part1 = parts[0]; // 004 
  4. String part2 = parts[1]; // 556-42 

而在某些场景下,我们可能想要在结果中保留分隔符,这也是可以做到了设置分隔符与分割后左侧的结果相连,

 
 
 
 
  1. String string = "86-15003455666"; 
  2. String[] parts = string.split("(?<=-)"); 
  3. String part1 = parts[0]; // 86- 
  4. String part2 = parts[1]; // 15003455666 

设置分隔符与分割后右侧的结果相连,

 
 
 
 
  1. String string = "86-15003455666"; 
  2. String[] parts = string.split("(?=-)"); 
  3. String part1 = parts[0]; // 86 
  4. String part2 = parts[1]; // -15003455666 

机智的你可能已经发现了,其实分割方法的精妙之处,全在于正则表达式 regex 的设置,正则表达式还是要好好学习的!

妙用正则表达式

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

 
 
 
 
  1. public class SplitExample { 
  2.     //\d代表数字,+代表出现一次或多次。所以(\\d+)-(\\d+)匹配用"-"相连的两个数字串 
  3.     // Pattern 对象是正则表达式的编译表示 
  4.     private static Pattern twopart = Pattern.compile("(\\d+)-(\\d+)"); 
  5.  
  6.     public static void checkString(String s) 
  7.     { 
  8.         // Matcher对象对输入字符串进行解释和匹配操作 
  9.         Matcher m = twopart.matcher(s); 
  10.         if (m.matches()) { 
  11.             //m.group(1) 和 m.group(2) 存储分割后的子串 
  12.             System.out.println(s + " matches; first part is " + m.group(1) + 
  13.                     ", second part is " + m.group(2) + "."); 
  14.         } else { 
  15.             System.out.println(s + " does not match."); 
  16.         } 
  17.     } 
  18.  
  19.     public static void main(String[] args) { 
  20.         checkString("123-4567");  // 匹配 
  21.         checkString("s-tar");    // 字母序列,不匹配 
  22.         checkString("123-");    // "-"右侧的数字串为空,不匹配 
  23.         checkString("-4567");    // "-"左侧的数字串为空,不匹配 
  24.         checkString("123-4567-890");    // 存在两个"-",不匹配 
  25.     } 

上述程序的运行结果为:

文章标题:如何在Java中优雅地分割String字符串
文章地址:http://www.shufengxianlan.com/qtweb/news31/106631.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联