【问题标题】:replaceAll, how to change lettersreplaceAll,如何更改字母
【发布时间】:2014-02-02 12:26:17
【问题描述】:

我需要什么而不是 "" 来用 * 替换所有字母?

public static void main(String[] args) {
    String s = "Tere, TULNUKAS, 1234!";
    String t = asenda(s); // "****, ********, 12345!" <---- example 
}

public static String asenda(String s) {
    return s.replaceAll("", "*");
}    

谢谢!

【问题讨论】:

  • replaceAll([a-zA-Z],"*") ?
  • 当心任何带有该正则表达式的非英文字符...更好的主意是 Unicode 字母类别:\\p{L}

标签: java string replaceall


【解决方案1】:

你必须使用正则表达式:

return s.replaceAll("[a-zA-z]", "*")

【讨论】:

    【解决方案2】:

    对于每个字母,您可以使用[a-zA-Z] 正则表达式

    例如:

    public static String asenda(String s) {
        return s.replaceAll("[a-zA-Z]", "*");
    } 
    

    【讨论】:

    • @RohitJain 然而它也不是一个普通的字符串。需要注意的事情:)
    • @MarkoTopolnik 不理解您的评论。 :(
    • @RohitJain $\ 是那里的特殊字符。尝试制作一个正则表达式将每个 \ 替换为 \\ :)
    • @MarkoTopolnik 确实如此。 $ 用于引用捕获组。 :)
    【解决方案3】:

    支持 unicode 字符的正确解决方案是

    public static String asenda(String s) {
        return s.replaceAll("\\p{L}", "*");
    }
    

    您可以将属于“字母”类别的单个字符与\p{L} 匹配。

    来源:Unicode Regular Expressions/Unicode Categories

    更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2017-02-19
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2014-12-06
      相关资源
      最近更新 更多