代码之家  ›  专栏  ›  技术社区  ›  Jana

replaceAll()与replaceAll(…,Matcher.quoteReplacement)

  •  2
  • Jana  · 技术社区  · 9 年前

    String geb = tf_datum.getText();
    String sep = ""; //sep is short for seperator
    
    geb = geb.replaceAll("\\.", sep);
    geb = geb.replaceAll("\\,", sep); 
    geb = geb.replaceAll("\\-", sep);
    geb = geb.replaceAll("\\ ", sep);`
    

    String geb = tf_datum.getText();
    
    String sep = "";
    geb = geb.replaceAll("\\.", Matcher.quoteReplacement(sep));
    geb = geb.replaceAll("\\,", Matcher.quoteReplacement(sep)); 
    geb = geb.replaceAll("\\-", Matcher.quoteReplacement(sep));
    geb = geb.replaceAll("\\ ", Matcher.quoteReplacement(sep)); 
    

    如果有人能帮我,那太好了! 谢谢。:)(我还发现了另一个问题 which seems to be the same

    1 回复  |  直到 9 年前
        1
  •  2
  •   Michael Burke    9 年前

    在第一种情况下,你需要 geb.replaceAll("\\.", "") 那么你是说拿走 geb

    geb.replaceAll("\\.", Matcher.quoteReplacement(sep)) .现在,你是说 geb公司

    https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#quoteReplacement(java.lang.String)

    https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

    但这里提到的一件事是使用引号替换来抑制控制字符(如“\”和“$”的特殊含义。因此,如果希望替换字符串(replaceAll的第二个参数)表现为文字字符而不是控制字符,则只需要使用它。

    同样值得注意的是,你可以像正则表达式一样在一个正则表达式中完成这一切 geb.replaceAll("[\\-\\,\\.\\s]", ""); 我认为还有比这更好的方法,但我的正则表达式并不好。