为了账号安全,请及时绑定邮箱和手机立即绑定

Java中replaceFirst(".", "")替换了字符串的第一个字符,算是Bug么

Java中replaceFirst(".", "")替换了字符串的第一个字符,算是Bug么

临摹微笑 2019-03-13 14:15:41
测试代码,很简单,如下:System.out.println("1,234,567.89".replace(".", "")); System.out.println("1,234,567.89".replaceFirst(".", "")); System.out.println("1,234,567.89".replace(",", "")); System.out.println("1,234,567.89".replaceFirst(",", "")); System.out.println("1,234,567.89".replace("2", "")); System.out.println("1,234,567.89".replaceFirst("2", "")); [/code] 按理说replaceFirst()是替换第一个匹配的字符串,当使用"."时,则替换了第一个字符串,没有做匹配。运行结果如下(JDK 6): [code="java"] 1,234,56789 ,234,567.89 1234567.89 1234,567.89 1,34,567.89 1,34,567.89这是什么原因呢,还是有什么道理在里边。
查看完整描述

7 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

replaceFirst方法第一个参数是正则表达式,小点需要转义

试试这个吧
System.out.println("1,234,567.89".replaceFirst("\.", ""));


查看完整回答
反对 回复 2019-04-26
?
茅侃侃

TA贡献1842条经验 获得超21个赞

楼上正解,需要转移的,


查看完整回答
反对 回复 2019-04-26
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}


查看完整回答
反对 回复 2019-04-26
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

:D JAVA中的Replace、ReplaceFirst、Split 等方法 前面的第一个传的参数是正则表达式字符串,"."在正则表达式是是匹配任意字符,所以你用ReplaceFirst总只能替换第一个字符。另外还有很多正则表达式的符号得参考正则表达式的用法了


查看完整回答
反对 回复 2019-04-26
?
ibeautiful

TA贡献1993条经验 获得超5个赞

第一个参数是正则表达式,.代表任意字符,所以直接替换掉第一个


查看完整回答
反对 回复 2019-04-26
?
手掌心

TA贡献1942条经验 获得超3个赞

google 正则表达式,元字符。
replace方法的参数是字符串,
replaceAll/replaceFirst的参数是正则表达式,需要注意对元字符的转义和贪婪匹配

查看完整回答
反对 回复 2019-04-26
?
RISEBY

TA贡献1856条经验 获得超5个赞

被楼上抢先一步了。。。楼主在查看API的时候要仔细一点,API里面说的很清楚,

String replaceAll(String regex, String replacement) 
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。 
String replaceFirst(String regex, String replacement) 
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的第一个子字符串。 
:)


查看完整回答
反对 回复 2019-04-26
  • 7 回答
  • 0 关注
  • 479 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信