把61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧 
61.54.231.246 61.54.231.246 河南省安阳市 未知地区 替换成061.054.231.245,061.054.231.245,河南省安阳市 新世纪网吧 
061.054.231.246,061.054.231.246,河南省安阳市 未知地区每个IP地址不足3位的前面补0..谁能帮忙用正则表达式实现这个功能?

解决方案 »

  1.   

    public class Test {
    public static void main(String[] args) {
    String in = "61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧";
    String[] ss1 = in.split(" ");

    String out = "";
    for (int i = 0; i < 2 ; i++) {
    String[] ss2 = ss1[i].split("\\.");
    for (int n = 0; n < 4; n++) {
    switch (ss2[n].length()) {
    case 1:
    out += "0";
    case 2:
    out += "0";
    default:
    out += ss2[n];
    }
    if (n < 3)
    out += ".";
    }
    out += " ";
    }

    out += ss1[2];
    out += " " + ss1[3];

    System.out.println(in);
    System.out.println(out);
    }
    }
      

  2.   

    package com.ejoy8.utils;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class IPFormater { public static void main(String[] args) { String[] ss = new String[] { //
    "61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧", //
    "61.54.231.246 61.54.231.246 河南省安阳市 未知地区", //
    "", //
    "", // }; List results = processBit(ss);
    for (Iterator it = results.iterator(); it.hasNext(); System.out.println(it.next()))
    ; System.out.println("\n\n\n"); results = processBlank((String[]) results.toArray(SS_BLANK));
    for (Iterator it = results.iterator(); it.hasNext(); System.out.println(it.next()))
    ; System.out.println("\n\n\n"); ss = format(ss);
    for (int i = 0; i < ss.length; System.out.println(ss[i]), i++)
    ;
    } //
    //
    //
    private static final String[] SS_BLANK = new String[] {}; private static final Pattern PATTERN_FOR_BIT = Pattern.compile("[^\\d][\\d]{3}|[^\\d][\\d]{1,2}"); private static final Pattern PATTERN_FOR_BLANK = Pattern.compile("([\\d]{3})[\\s]"); public static final String[] format(String[] ss) {
    List results = processBit(ss);
    results = processBlank((String[]) results.toArray(ss)); return (String[]) results.toArray(SS_BLANK);
    } private static List processBit(String[] ss) {
    List results = new ArrayList();
    for (int i = 0; i < ss.length; i++) {
    String s = ss[i];
    if (s == null)
    continue; s = " " + s;
    Matcher matcher = PATTERN_FOR_BIT.matcher(s);
    StringBuffer sb = null;
    int start = 0; String finalString = null;
    while (matcher.find(start)) {
    sb = new StringBuffer();
    String wantedpart = matcher.group(0); if (wantedpart != null) {
    int key = wantedpart.length(); switch (key) {
    case 2:
    matcher.appendReplacement(sb, new StringBuffer(wantedpart).insert(1, "00").toString());
    break;
    case 3:
    matcher.appendReplacement(sb, new StringBuffer(wantedpart).insert(1, "0").toString());
    break;
    default:
    } matcher.appendTail(sb);
    finalString = sb.toString();
    matcher.reset(sb.toString());
    }
    start += 4;
    }
    if (finalString != null)
    results.add(finalString.trim());
    } return results;
    } private static List processBlank(String[] ss) { List results = new ArrayList(); for (int i = 0; i < ss.length; i++) {
    String s = ss[i];
    if (s == null)
    continue; Matcher matcher = PATTERN_FOR_BLANK.matcher(s); String finalString = null; while (matcher.find()) {
    String replacement = matcher.group(1) + ",";
    finalString = matcher.replaceFirst(replacement);
    matcher.reset(finalString);
    } if (finalString != null)
    results.add(finalString.trim()); }
    return results;
    }
    }
      

  3.   

    String ip = "12.222.333.4";
    String arrIp[] = ip.split("\\.");
    StringBuffer result = new StringBuffer();

    for(int i=0;i<arrIp.length;i++){
    result.append(("000"+arrIp[i]).substring(arrIp[i].length()));
    result.append((i<arrIp.length-1)?".":"");
    }

    System.out.println(result.toString());
      

  4.   

    import java.util.regex.MatchResult;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test {
    public static void main(String[] args) {
    String in = "61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧";
    Pattern p = Pattern.compile("\\d{1,3}");
    Matcher m = p.matcher(in);
    int offset = 0;

    StringBuffer sb = new StringBuffer(in);
    while (m.find()) {
    MatchResult mr = m.toMatchResult();
    int s = mr.start();
    int e = mr.end();
    int r = e - s;

    if (r == 1) {
    sb.insert(s + offset, "00");
    offset += 2;
    }
    else if (r == 2) {
    sb.insert(s + offset, "0");
    offset += 1;
    }
    }
    System.out.println(in);
    System.out.println(sb);
    }
    }
      

  5.   

    给分吧,呵呵:
    /**
    *author: Eastsun
    */
    public class ReplaceT{
        public static void main(String[] args){
            String str ="61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧" +
                              "\n61.54.231.246 61.54.231.246 河南省安阳市 未知地区" ;
            String format =null;
            
            format  = str.replaceAll("(^|\\s|\\G|\\.|\\D)(\\d{2})($|\\s|\\.)","$10$2$3");
            format  = format.replaceAll("(^|\\s|\\G|\\.|\\D)(\\d)($|\\s|\\.)","$100$2$3");
            format  = format.replaceAll("(?<=^|\\D|\\G)(\\d{3}(\\.\\d{3}){3})(\\s)","$1$2,");
            System.out.println(format);
        }
    }
      

  6.   

    String in = "61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧";
    String out = in.replaceAll("\\d{3}", "#$0#")
    .replaceAll("\\d{2}\\.", "0$0")
    .replaceAll("\\d{3}", "#$0#")
    .replaceAll("\\d{1}\\.", "00$0")
    .replaceAll("#", "");
    System.out.println(in);
    System.out.println(out);
      

  7.   

    \b(\d{2})\b    =>    0$1\b(\d)\b       =>    00$1分两次
      

  8.   

    String in = "61.54.231.245 61.5.231.245 河南省安阳市 新世纪网吧";
    String out = in.replaceAll("\\b\\d{1}\\b", "00$0").replaceAll("\\b\\d{2}\\b", "0$0");