黑马程序员技术交流社区
标题:
正则表达式字符串换行
[打印本页]
作者:
凝聚
时间:
2013-10-2 11:02
标题:
正则表达式字符串换行
本帖最后由 凝聚 于 2013-10-2 11:17 编辑
package twentyfive;
import java.util.*;
public class seven {
public static void main(String[] args) {
sort();
}
public static void sort()
{
String ip="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
ip=ip.replaceAll("(\\d+)","00$1");
//System.out.println(ip);
ip=ip.replaceAll("0*(\\d{3})","$1");
System.out.println(ip);
}
}
想将上述代码输出端结果为:
192.068.001.254
102.49.23.013
10.10.10.10
这样的形式怎么办。
而这个程序输出的结果为:192.068.001.254 102.049.023.013 010.010.010.010 002.002.002.002 008.109.090.030
作者:
陈钦涛
时间:
2013-10-2 13:17
你的替换操作是对整个字符串进行操作的,并没有进行分割操作并分别打印操作,打出来的当然还是整个字符串
public static void ipSort()
{
String ip = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
ip = ip.replaceAll("(\\d+)","00$1");
System.out.println(ip);
ip = ip.replaceAll("0*(\\d{3})","$1");
System.out.println(ip);
String[] arr = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();
//这里也可以用Array.sort(arr[])进行升序排序,如果有相同对象的话就不好用TreeSet了
for(String s : arr)
{
ts.add(s);
}
for(String s : ts)
{
System.out.println(s.replaceAll("0*(\\d+)","$1"));
}
}
作者:
张文豪
时间:
2013-10-2 16:31
换行的话,要将ip字符串 按" "切割 得到一个字符数组进行输出。
为什么最后输出少于3位的数还有0呢,是因为你原先因为要比较自然顺序,把不满3位数的数通过加0变成3为数,最后输出时,没有replaceAll回来.然后你输出时的顺序不是自然顺序,是反向的,可通过Collections中的
reverseOrder()得到一个逆向的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2