示例博客有个小练习,注意看最后一步
- /*
- *需求: 将ip地址进行地址段顺序的排序。 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301
- *思路: 按照字符串自然顺序,只要让他们每一段都是3位即可。
- * 1、按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。
- * 2、将每一段只保留3位。
- */
- public class RegexTest_2 {
- public static void main(String[] args) {
- String ip="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301";
- System.out.println(ip);
-
- //保证每一段至少三位
- ip = ip.replaceAll("(\\d+)", "00$1");
- System.out.println(ip);
-
- //将每一段截取到三位
- ip = ip.replaceAll("0*(\\d{3})", "$1");
- System.out.println(ip);
-
- //以空格截取子串
- String[] ips = ip.split(" ");
-
- //利用TreeSet自然元素排序
- TreeSet<String> tSet = new TreeSet<String>();
- for(String string : ips){
- tSet.add(string);
- }
-
- //去掉每段多余的0并打印
- for(String string : tSet){
- //不恰当的匹配,102会被截取为12
- //System.out.println(string.replaceAll("0*(\\d)", "$1"));
- }
- }
- }
复制代码
如果对102.049.023.013去0会变成12.49.23.13,应该怎么写好呢?
我有想过
- System.out.println(string.replaceAll("(0([^0]\\d))|(00([^0]))", "$2"));
复制代码
但不知道$后面怎么写
|
|