Java的。 string.replaceFirst()的奇怪行为

时间:2012-12-23 00:02:38

标签: java string

我有一个“余额”字符串,前面有一个美元符号。 我想修改这个标志,所以我可以将sting转换为double,但我的代码无效。

这是我尝试过的:

String balance = "$5.30";
balance = balance.replaceFirst("$", "");

看起来代码没有任何区别。 为了使它更奇怪,下面的代码完全符合我的需要:

String balance = "$5.30";
balance = balance.replaceFirst(".", "");

即使我可以使用第二个代码,但我想了解它为什么会导致这个结果。

1 个答案:

答案 0 :(得分:7)

$.是java正则表达式世界中的一个特殊字符(元字符),您应该使用反斜杠对其进行转义,以便将其视为普通字符。

String balance = "$5.30";
balance = balance.replaceFirst("\\$", "");

String balance = "$5.30";
balance = balance.replaceFirst("\\.", "");

因此:

      String balance = "$5.30";
      balance = balance.replaceFirst("\\.", "").replaceFirst("\\$", "");
      System.out.println(balance);

输出:530

只是想在正则表达式中添加有关$.含义的更多说明:

  1. $用于检查行尾是否跟随
  2. .用于匹配任何标志
  3. 这是Regex in java

    的教程