今天写代码,遇到了个问题,想把字符串中的'.'全部去掉,之前也用过一些处理的办法,今天使用了String中的replaceall方法,拿来大家一起学习学习。
SimpleDateFormat date = new SimpleDateFormat("yyyy.MM.dd");
String receivedTime = date.format(new Date(System.currentTimeMillis()));
receivedTime = receivedTime.replaceAll("//.", "");
System.out.println(receivedTime);
顺便总结下replaceAll,split
java.lang.String split
String的split方法是直接按照给定的字符串对字符串进行拆分
例如
- String value = "a,b,c,d,e";
- String[] names = value.split(",");
- for(int i=0,n=names.length;i
- System.out.print(names[i]);
运行结果:
a b c d e
但是在做ip解析时发现出了问题,代码如下:
- String value = "209.242.1.1";
- String[] names = value.split(".");
- for(int i=0,n=names.length;i
- System.out.print(names[i]+" ");
理想的输出结果应该是219 242 1 1,结果什么都没有输出。
很奇怪哦。看一下split的方法签名吧。
- public String[] split(String regex)
这里的参数的名称是 regex ,也就是 Regular Expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式:
- public String[] split(String regex, int limit)
- {
- return Pattern.compile(regex).split(this, limit);
- }
split 的实现直接调用的 Matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
修改代码如下:
- String value = "209.242.1.1";
- String[] names = value.split("//.");
- for(int i=0,n=names.length;i
- System.out.print(names[i]+" ");
Replace 方法
用法 :
- public void testReplace()
- {
- String A = "aaa bCskd dkkAik kdaFe";
- System.out.println(A.replace('a', '_'));
- }
结果为:___ bCskd dkkAik kd_Fe
此方法用来替换char字符,对字符串不能处理,A.replace('aaa', '=') 是错误的,但是 A.replace(“aaa”, “=”)却是可以的
- public void testReplace()
- {
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replace("aaa", "="));
- }
结果为:= bCskd dkkAik k=Fe
可见 replace("","")与方法replaceAll("","")拥有差不多的功能,仔细看看差别。
是1.5之后才有的功能哦,但是 replaceAll却更强大。
- public void testReplace()
- {
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replace(" ", ""));
- }
结果为aaabCskddkkAikkaaaFe
replaceAll可以将字符串内部的空格去掉
但是用replace(' ','')方法却不可以
replace(" ","")方法可以
另外一点
- public void testReplace()
- {
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replaceAll("[a-z]", "="));
- }
结果为:=== =C=== ===A== ====F=
replaceAll可以用正则表达式,强大啊……