replaceAll方法 替换 ip的地址 如何用replaceAll方法 替换ip 地址 比如 202.96.22.5 替换成 202.096.022.005 那个正则怎么写。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方法有很多嘛,不要想着只要调用一个简单的函数就可以解决问题,如果是这样,编程也就太简单了。想用正则表达式判断一下ip格式是否符合xxx.xxx.xxx.xxx符合就跳过,不符合就自己的定义一个方法来处理:按.号来截取字符串(ip),然后单独处理每个字串,判断长度是否为3,不足就补零当然这是一种比较土的方法。 import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test6 { public static void main(String[] args) { String str = "222.96.22.5"; // 方法 1(推荐) Pattern pattern = Pattern.compile("(?<=^|\\.)(?:(\\d{2})|(\\d))(?!\\d)"); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while (matcher.find()) { if (matcher.start(1) > 0) { matcher.appendReplacement(sb, "0$1"); } else if (matcher.start(2) > 0) { matcher.appendReplacement(sb, "00$2"); } } matcher.appendTail(sb); System.out.println(sb.toString()); // 方法 2 str = str.replaceAll("(?<=^|\\.)(\\d{1,2})(?!\\d)", "0$1") .replaceAll("(?<=^|\\.)(\\d{2})(?!\\d)", "0$1"); System.out.println(str); }} 我觉得replaceAll 应该可以完成啊~~ 我想的是可以分两步,先把2位的补零,在把1位的补零我正则这样写 String regex1 = "(?=\\d{2}[\\.])"; str.replaceAll(regex1,"0"); 但是 写的不对 会把 三位的中间也补零了 比如 192 就成了 1092 。 所以想 正则该怎么改 而且我目的是为了 把放在文件里的ip换一种格式,如果把每个ip的取出来,然后split, 改完了,在把它拼接好。 效率好像不怎么样哦。 哈哈,不好意思。if 判断那里写错了,你把 if 子句那里两个 > 0 改成 > -1 或者 >= 0 就可以了。 Java中关于字符串的一道面试题 bigInteger计算 刚学对象 大家帮我看看我这个调用更新错在哪了 关于LINUX下JAVA的配置 有关jframe焦点的问题!!!!!!!高手请进!! 帮忙解释一下输出结果 如何获得机器的硬件信息 Exception in thread "main" java.lang.NoClassDefFoundError: PrintPen Java中的字符串连接 紧急求助 谁知道竖着的布局管理器是哪个? 内部类这一块遇到问题啦
想用正则表达式判断一下ip格式是否符合xxx.xxx.xxx.xxx
符合就跳过,不符合就自己的定义一个方法来处理:
按.号来截取字符串(ip),然后单独处理每个字串,判断长度是否为3,不足就补零
当然这是一种比较土的方法。
import java.util.regex.Pattern;public class Test6 { public static void main(String[] args) {
String str = "222.96.22.5";
// 方法 1(推荐)
Pattern pattern = Pattern.compile("(?<=^|\\.)(?:(\\d{2})|(\\d))(?!\\d)");
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
if (matcher.start(1) > 0) {
matcher.appendReplacement(sb, "0$1");
} else if (matcher.start(2) > 0) {
matcher.appendReplacement(sb, "00$2");
}
}
matcher.appendTail(sb);
System.out.println(sb.toString());
// 方法 2
str = str.replaceAll("(?<=^|\\.)(\\d{1,2})(?!\\d)", "0$1")
.replaceAll("(?<=^|\\.)(\\d{2})(?!\\d)", "0$1");
System.out.println(str);
}
}
我想的是可以分两步,先把2位的补零,在把1位的补零
我正则这样写
String regex1 = "(?=\\d{2}[\\.])"; str.replaceAll(regex1,"0"); 但是 写的不对
会把 三位的中间也补零了 比如 192 就成了 1092 。 所以想 正则该怎么改
而且我目的是为了 把放在文件里的ip换一种格式,如果把每个ip的取出来,然后split, 改完了,在把它拼接好。 效率好像不怎么样哦。
哈哈,不好意思。if 判断那里写错了,你把 if 子句那里两个 > 0 改成 > -1 或者 >= 0 就可以了。