使用{}花括号的Java String replaceAll()方法

使用{}花括号的Java String replaceAll()方法,java,string,replaceall,Java,String,Replaceall,因此,对于我在Android Studio中的应用程序,我想替换以下内容: String card = cards.get(count).getCard(); if (card.contains("{Player1}")) { String replacedCard = card.replaceAll("{Player1}", "Poep"); } 字符串卡的一个例子是:{Player1}与你旁边的人交换饮料 不知怎的,我不能用{}来替换。上面写着:{悬垂的元字符。}截

因此,对于我在Android Studio中的应用程序,我想替换以下内容:

String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
            String replacedCard = card.replaceAll("{Player1}", "Poep");
}
字符串卡的一个例子是:{Player1}与你旁边的人交换饮料

不知怎的,我不能用{}来替换。上面写着:{悬垂的元字符。}截图:


有解决方法吗?

您需要用\来转义初始的{with\

String card=“{Player1}”;
if(卡片包含(“{Player1}”)){
String replacedCard=card.replaceAll(“\\{Player1}”,“Poep”);
System.out.println(“替换:+replacedCard”);
}

replaceAll
的第一个参数是一个被解析为(regEx)的字符串
是特殊的保留元字符,用于表示正则表达式中的某些内容。要将其作为普通字符进行匹配,需要使用前导反斜杠对其进行转义
\
,并且由于反斜杠也是特殊字符,因此需要使用附加反斜杠对其本身进行转义:

String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");

由于replaceAll方法的输入值需要一个正则表达式,因此需要用反斜杠转义花括号。花括号是正则表达式上下文中的特殊字符

在Java中,正则表达式中的反斜杠是由双反斜杠
\\
完成的(请参阅以获取参考)

因此,您需要像这样调整直线:

String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");

{}是正则表达式的特殊字符。replaceAll方法将正则表达式作为第一个参数,因此,如果还希望替换花括号,则必须将其跳过为\\,如下所示:

    String card = cards.get(count).getCard();
    if (card.contains("{Player1}")) {
        String replacedCard = card.replaceAll("\\{Player1}", "Poep");
    } 

{}
都是保留的正则表达式字符。由于
replaceAll()
函数接受正则表达式参数,因此必须显式声明
{
}
是实际字符串的一部分。您可以在它们前面加转义字符:
\
。但由于转义字符也是保留字符,因此也需要转义它

以下是编写代码的正确方法:

String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
    String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");
}

方法
String.replaceAll
需要一个正则表达式。其他答案已经给出了解决方案。但是,如果不需要正则表达式,则还可以使用:


考虑使用<代码>字符串。替换< /代码>而不是<代码>字符串。
String replacedCard = card.replace("{Player1}", "Poep");