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(".", "/"));
  4. }
输出结果是? 
如果你认为是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的更多相关文章

  1. Java中replace与replaceAll区别

    看门见山 1.java中replace API: replace(char oldChar, char newChar):寓意为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所 ...

  2. Java中替换字符串中特定字符,replaceAll,replace,replaceFirst的区别

    使用“;”替换过字符串中的“,” public class Test01 {public static void main(String[] args) {String number = " ...

  3. Java String.replace()方法

    Java String.replace()方法用法实例教程, 返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar 声明 以下是java.lang.String.replace( ...

  4. java中replace和replaceAll的区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharS ...

  5. JAVA中REPLACE和REPLACEALL的区别(转)

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(Char ...

  6. java中replace()和replaceAll()区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharS ...

  7. 浅谈java中replace()和replaceAll()的区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharS ...

  8. Java 的replace和replaceAll的使用

    (1)replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串. public String replace(char oldChar, ...

  9. java的replace和replaceAll

    都是全部替换,只不过后者参数为正则 replaceFirst()是替换第一个

随机推荐

  1. window.getComputedStyle——ref

    componentDidMount() { const LeftHeight = window.getComputedStyle(this.leftDom).height; console.log(L ...

  2. 在路上:安全公司“跨界”SD-WAN

    编者按:本文是SDNLAB“企业+”特别报道之一.“企业+”是SDNLAB重点打造的栏目,汇聚信息行业运营商.设备商.互联网公司.软件公司.集成公司.融创投资公司.科研院所等企业,重新定义IT行业撮合 ...

  3. Light oj 1013 - Love Calculator (LCS变形)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1013 题意: 给你两个字符串,让你构造出一个长度最小的字符串,且它的子序列包含 ...

  4. HDU 2586 How far away ? 离线lca模板题

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. luogu P2066 机器分配

    题目背景 无 题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15 ...

  6. 移除array中重复的item

    //move the repeated item            NSInteger index = [orignalArray count] - 1;            for (id o ...

  7. iOS -- SpriteKit框架之SKPhysicsBody的移动和连接

      SKPhysicsBody的受力移动 SKPhysicsBody对象不同于SKSpriteNode对象.SKSpriteNode对象可以通过添加动作来进行移动,SKPhysicsBody对象却没有 ...

  8. 使用find命令查找Linux中的隐藏文件的方法

    我们可以在Linux 或者 Unix 系统上使用 find 命令去查询所有(全部)隐藏文件 基本语法如下: 复制代码 代码如下: [root@dabu.info ~]#find /要查找的文/件/夹/ ...

  9. GOF 23种设计模式-单例模式

    • 创建型模式: – 单例模式.工厂模式.抽象工厂模式.建造者模式.原型模式. • 结构型模式: – 适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模 式. • 行为型模式: – ...

  10. fast-cgi & php-fpm 等的理解

    原文地址:https://segmentfault.com/q/1010000000256516 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-fpm是fast ...