码迷,mamicode.com
首页 > 编程语言 > 详细

java replaceAll Replace

时间:2014-05-09 12:49:47      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   class   java   ext   c   int   

java ReplaceAll 的两个参数都必须是正则表达式。

在正则表达式中 
\ (一个斜线)是用 \\ 来表示(即:用两个斜线表示一个斜线)

而在Java语言中 \ (一个斜线)是用 \\ 来表示。(即:也用两个斜线表示一个斜线)

所以正则表达式为两个斜线("\\")的写法,在Java语言中要用4个斜线来表示"\\\\"
(即: 一个"现实中的斜线" 在 正则表达式中用2个斜线来表示,而在Java中2个斜线要用4个斜线来表示)

所以代码如下:
/*
例如: str = "\\\\"; 实际上是表示2个斜线。
你的目的是将2个"实际"斜线 替换为4个"实际斜线"
需要编写如下代码
*/
// str的实际内容是\\ (即两个斜线)
String str = "\\\\";
//将str中的两个斜线,转换为两个双斜线(即: 4条斜线)
str = str.replaceAll("\\\\", "\\\\\\\\");
System.out.println(str);
 
 
  1. public static void main(String[] args) {   
  2.          String classPath = "java.lang.String";   
  3.          System.out.println(classPath.replaceAll(".", "/"));   
输出结果是? 
如果你认为是java/lang/String ,那你就错了。正确的输出结果是:////////////////
原因:请先看看replace和replaceAll的区别。
replace和replaceAll的区别:

1、replace的参数是CharSequence和CharSequence,其中第一个是匹配的字符或字符串,第二个是替换的字符或字符串。即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,相当于字符串)
2、replaceAll的参数是String和String,第一个参数regex,是替换规则(用正则表达式)。原因在于String类中replaceAll的实现用到Pattern进行正则表达式匹配(关于正则表达式可以baidu或google一下,以后有空再写篇文章总结下)。

 

replaceAll的源代码如下:

public String replaceAll(String regex, String replacement) {
     return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

 

在正则表达式中.(小圆点)表示匹配除换行符号外的任意字符,所以上面的例子才会出现16个/

如果想匹配小圆点,可以用转义字符\ 则代码应该如下:

System.out.println(classPath.replaceAll("\\.", "/"));  //其中\\匹配\,之后的\. 匹配.(小圆点)

当然,你也可以用replace()进行处理,如下:

System.out.println(classPath.replace(".", "/"));
 

 



 

java replaceAll Replace,布布扣,bubuko.com

java replaceAll Replace

标签:style   class   java   ext   c   int   

原文地址:http://www.cnblogs.com/yixianyixian/p/3718194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!