A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Synaric 中级黑马   /  2015-10-5 10:37  /  403 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

示例博客有个小练习,注意看最后一步
  1. /*
  2. *需求: 将ip地址进行地址段顺序的排序。 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301
  3. *思路: 按照字符串自然顺序,只要让他们每一段都是3位即可。
  4. *      1、按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。
  5. *      2、将每一段只保留3位。
  6. */
  7. public class RegexTest_2 {
  8.         public static void main(String[] args) {
  9.                 String ip="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301";  
  10.                 System.out.println(ip);
  11.                
  12.             //保证每一段至少三位
  13.                 ip = ip.replaceAll("(\\d+)", "00$1");
  14.                 System.out.println(ip);
  15.                
  16.                 //将每一段截取到三位
  17.                 ip = ip.replaceAll("0*(\\d{3})", "$1");
  18.                 System.out.println(ip);
  19.              
  20.                 //以空格截取子串
  21.                 String[] ips = ip.split(" ");
  22.                
  23.                 //利用TreeSet自然元素排序
  24.                 TreeSet<String> tSet = new TreeSet<String>();
  25.                 for(String string : ips){
  26.                         tSet.add(string);
  27.                 }
  28.                
  29.                 //去掉每段多余的0并打印
  30.                 for(String string : tSet){
  31.                         //不恰当的匹配,102会被截取为12
  32.                         //System.out.println(string.replaceAll("0*(\\d)", "$1"));
  33.                 }
  34.         }
  35. }
复制代码

如果对102.049.023.013去0会变成12.49.23.13,应该怎么写好呢?

我有想过
  1. System.out.println(string.replaceAll("(0([^0]\\d))|(00([^0]))", "$2"));
复制代码

但不知道$后面怎么写

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马