使用replaceall输出错误

时间:2011-03-03 10:26:55

标签: java string

为什么我从以下代码获得“AAAAAAAAA”而不是“1A234A567”:

String myst = "1.234.567";

String test = myst.replaceAll(".", "A");

System.out.println(test);

任何想法?

4 个答案:

答案 0 :(得分:7)

试试这个:

String test = myst.replace(".", "A");

区别: replaceAll()将模式解释为正则表达式,replace()将其解释为字符串文字。

以下是java.lang.String的相关源代码(缩进并由我评论):

public String replaceAll(String regex, String replacement) {
    return Pattern.compile(regex)
                  .matcher(this)
                  .replaceAll(replacement);
}


public String replace(CharSequence target, CharSequence replacement) {
    return Pattern.compile(
              target.toString(),
              Pattern.LITERAL /* this is the difference */
           ).matcher(this)
            .replaceAll(
                Matcher.quoteReplacement(
                    /* replacement is also a literal,
                       not a pattern substitution */
                    replacement.toString()
            ));
}

<强>参考:

答案 1 :(得分:6)

replaceAll函数将正则表达式作为参数。而正则表达式“。”意思是“任何角色”。你必须转义它以指定它是你想要的角色:replaceAll("\\.", "A")

答案 2 :(得分:1)

您需要转义.

制作

String myst = "1.234.567";

String test = myst.replaceAll("\\.", "A");

System.out.println(test);

答案 3 :(得分:0)

因为输入的每个字符都匹配正则表达式模式(.)。要替换点,请使用以下模式:\.(或作为Java字符串:"\\.")。