一道正则表达式的简单问题
把
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..谁能帮忙用正则表达式实现这个功能?
[解决办法]
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);
}
}
[解决办法]
学习了
[解决办法]
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;
}
}
[解决办法]
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());
[解决办法]
给分吧,呵呵:
/**
*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);
}
}
[解决办法]
//
[解决办法]
\b(\d{2})\b => 0$1
\b(\d)\b => 00$1
分两次
[解决办法]
呵呵。。学写了。。。。谢谢楼主的问题
[解决办法]
标记下 简单就是硬道理
[解决办法]
高手啊,都是高手,学习
[解决办法]
呵呵
路过,楼主多看API吧