【问题标题】:Blank character constant in JavaJava中的空白字符常量
【发布时间】:2019-05-21 09:00:24
【问题描述】:

我们如何在 Java 中用空白替换特定的 char 常量?

\0 替换为空格字符而不是空格。

输入:

    String amount = "1.22.33,11";

想要的结果:12233,11

【问题讨论】:

  • 空白字符在哪里?

标签: java string char


【解决方案1】:
    String amount = "1.22.33,11";
    String result = amount.replace(".", "");
    System.out.println(result);

输出:

12233,11

无需使用正则表达式或外部依赖项。

String 类的replace​(CharSequence target, CharSequence replacement) 方法将每次出现的文字目标字符串替换为替换字符串。因此,只需将空字符串作为替换即可。

您的任务可能被描述为删除出现的.。所以用“空白”字符替换,不管是什么,都不是正确的解决方案,你仍然会有一些字符。相反,我们将一个单字符 string 替换为另一个没有字符的字符串。

正如@Lino 在 cmets 中指出的那样,JDK 版本高达至少 8(我没有检查过 9 和 10)在每次调用该方法时将正则表达式编译为 Pattern。在 Java 11 中提供了一个高效的实现。

【讨论】:

  • @Lino 恕我直言(这只是我)即使在 Java 8 中,它也比正则表达式的显式规范更具可读性。并且更具前瞻性,因为一旦您升级 Java,它将“自动”变得更加高效。在我看来,按照您的答案预编译模式似乎是过早的优化。无论如何,感谢您将我的注意力转移到这个问题上。
  • 我同意,干净的代码 > 微优化。让 jdk 处理它:)
【解决方案2】:

您可以为此使用正则表达式:

String result = amount.replaceAll("\\.", "");

\. 匹配每个文字句点 (.) 并将其替换为空字符串 ("")


如果将正则表达式保存为 java.util.regex.Pattern 到变量中,则可以进一步优化:

private static final Pattern DOT = Pattern.compile("\\.");

然后你可以像这样使用它:

String result = DOT.matcher(amount).replaceAll("");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2022-07-08
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多