JAVA中string.replace和string.replaceAll的区别及用法

 我来答
香料魔法
2018-11-29 · TA获得超过2.2万个赞
知道答主
回答量:218
采纳率:60%
帮助的人:22万
展开全部

1、替换方式不同

【public String replace( )】

是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。

【public String replaceAll( )】

使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。

2、参数不同

【replace】的参数是char和CharSequence。可以支持字符的替换,也支持字符串的替换。

【replaceAll】的参数是regex,regex表示是正则表达式。即基于正则表达式的替换。

用法范例一:

public static void main(String[] arg) throws OgnlException {

String s =”sdf\\a\\aa”;

//把s中的反斜杠\ 替换为\\

System.out.println(s);

System.out.println(s.replaceAll(“\\\\”, “\\\\\\\\”));

System.out.println(s.replace(“\\”, “\\\\”));

}

用法范例二:

String str = "wel2come3Souhe";

String str1 = str.replace("e", "E");

String str3 = str.replace('e', 'E');

System.out.println("replace字符串==" + str1);

System.out.println("replace字符=="+str3);

String str2 = str.replaceAll("\\d", "a");//将数字替换a

System.out.println("replaceAll==" + str2);

输出结果:

replace字符串==wEl2comE3SouhE

replace字符==wEl2comE3SouhE

replaceAll==welacomeaSouhe

扩展资料

Java中的String类

1、String类是final类,因此String类不能被继承。

2、String的成员方法都默认为final方法。

3、被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。

4、String类其实是通过char数组来保存字符串的。

5、String对象一旦被创建就是固定不变的。

6、对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

参考资料:百度百科-Java

参考资料:百度百科-string

QQMSD8
2018-07-06 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

replace是单纯的替换字符串,而replaceAll是替换匹配的正则表达式。

以下为JDK API的doc说明:

  1. replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

  2. replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8b93ebb
2015-11-07 · TA获得超过193个赞
知道小有建树答主
回答量:297
采纳率:100%
帮助的人:88.7万
展开全部
replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
  2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
  相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用 replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;
  另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
  还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的.
  举例如下:
  String src = new String("ab43a2c43d");
  System.out.println(src.replace("3","f"));=>ab4f2c4fd.
  System.out.println(src.replace('3','f'));=>ab4f2c4fd.
  System.out.println(src.replaceAll("\\d","f"));=>abffafcffd.
  System.out.println(src.replaceAll("a","f"));=>fb43fc23d.
  System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d
  System.out.println(src.replaceFirst("4","h"));=>abh32c43d.
  如何将字符串中的"\"替换成"\\":
  String msgIn;
  String msgOut;
  msgOut=msgIn.replaceAll("\\\\","\\\\\\\\");
  原因:
  '\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\。
  同样
  CODE: \\\\\\\\
  Java: \\\\
  Regex: \\
  将字符串中的'/'替换成'\'的几种方式:
  msgOut= msgIn.replaceAll("/", "\\\\");
  msgOut= msgIn.replace("/", "\\");
  msgOut= msgIn.replace('/', '\\');
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式