本帖最后由 never615 于 2014-6-11 16:59 编辑
在ip排序这个练习里面 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30
10前面补零留三位之后是010 然后用正则去零, replaceAll("0*(\\d+)","$1") 0*表示0次或者多次啊, 010中 开头的0出现了一次啊,按理说不适用这个规则啊,怎么回事? 毕老师视频里面 说了192前面没零的情况,说了002前面两个零的情况,就是没有提010,前面只有一个零时。。郁闷啊 又想不通了,应该怎么想?还有看看下面代码里面我注释的部分
- */
- public static void test_2()
- {
- String str="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
- str=str.replaceAll("(\\d+)","00$1");
- str=str.replaceAll("0+(\\d{3})","$1"); //这块老师写的("0*(\\d{3})","$1"); 但是我想0010,后面保留三位,前面就剩下一个0了,不符合,0*啊,就写了0+
- sop(str);
- String[] arr=str.split(" ");
- TreeSet<String> ts=new TreeSet<String>();
- for(String s:arr)
- {
- ts.add(s);
- }
- for(String s:ts)
- {
- sop(s.replaceAll("0*(\\d+)","$1")); //这块写0+的话,打印结果变成了下面的第二种结果
- }
- }
复制代码 正确的打印结果
2.2.2.28.109.90.30
10.10.10.10
102.49.23.13
192.68.1.254
第二结果:
2.2.2.2
8.19.90.30
10.10.10.10
12.49.23.13
192.68.1.254
|
|