日期:2014-05-20  浏览次数:20791 次

关于String的replaceAll方法???
在用正则表达式时,我写了下面的这段代码
public   class   TryDotRegEx   {
public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
String   str   =   "60.30.8.8 ";
str=str.replaceAll( "(^|\\.)(\\d)(\\.|$) ", "$100$2$3 ");
str=str.replaceAll( "(^|\\.)(\\d{2})(\\.|$) ", "$10$2$3 ");
               
System.out.println(str);
}

}

想用它来把那个str中的非三位数以补零的方式改为三位,如将 "60.30.8.8 "替换为 "060.030.008.008 ",可当运行时上面的那段程序时,它只对匹配到的第一个数进行替换,而后面的就不再替换了,即它只把60替换为060了,而后面的30就一点也没处理,我想问下这里是replaceAll呀,怎么只替换第一个呢?

请高手帮俺看看,谢谢!!!!!

------解决方案--------------------
用NumberFormat来做
------解决方案--------------------
因为你第一次匹配就把数字后面的 ". "给取走了,剩下当然不能匹配你的要求了
------解决方案--------------------
str=str.replaceAll( "\\b(\\d{2})\\b ", "0$1 ").replaceAll( "\\b(\\d)\\b ", "00$1 ");