黑马程序员技术交流社区

标题: 使用正则表达式获取字符串中的IP地址的一个问题 [打印本页]

作者: love~陌    时间: 2014-6-5 22:18
标题: 使用正则表达式获取字符串中的IP地址的一个问题
主要输出结果是:

10.10.10.10
187.255.255.255
192.168.1.154
196.154.1.2
198.40.5.4
2.2.2.2

问题是:如何排序


作者: love~陌    时间: 2014-6-5 22:19
  1. package com.itcast.regex;

  2. import java.util.TreeSet;

  3. public class IpRegexPractice {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 ipSort("192.168.1.154        196.154.01.002  10.10.10.10  2.2.2.2    198.40.5.4   187.255.255.255");
  10.         }
  11.        
  12.         public static void ipSort(String ip){
  13.                
  14.                 //都视为一位数字,前面先加上00
  15.                 ip=ip.replaceAll("(\\d+)", "00$1");
  16.                 System.out.println(ip);
  17.                
  18.                 //去掉数字前面多余的0
  19.                 ip=ip.replaceAll("0*(\\d+{3})","$1");
  20.                 System.out.println(ip);
  21.                
  22.                 //获取地址值
  23.                 String[]arr=ip.split(" +");
  24.                 TreeSet<String> ts=new TreeSet<String>();
  25.                
  26.                 for (String string : arr) {
  27.                         ts.add(string);
  28.                 }
  29.                
  30.                 for (String string : ts) {
  31.                         System.out.println(string.replaceAll("0*(\\d+)","$1"));
  32.                 }
  33.         }

  34. }
复制代码



网速太慢,代码貌似没传上去,
作者: love~陌    时间: 2014-6-5 22:29
话说,需要写比较器么?
作者: 梦里听传说    时间: 2014-9-11 13:11
import java.util.*;
class dz
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                String str="10.10.10.10 187.255.255.255 192.168.1.154 196.154.1.2 198.40.5.4 2.2.2.2;
                xiaoyan(str);
        }
        public static void xiaoyan(String str)
        {
                str=str.replaceAll("(\\d+)","00$1");
                str=str.replaceAll("0*(\\d{3})","$1");
                TreeSet<String> s=new TreeSet<String>();
                String[] k=str.split(" +");
                for(String name:k)
                {
                        s.add(name);
                }
                for(String name:s)
                {
                        sop(name.replaceAll("0*(\\d+)","$1"));
                }

        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2