Java 使用 {} 大括号的字符串 replaceAll() 方法
Java String replaceAll() method using {} curly brackets
因此,对于我在 Android Studio 中的应用,我想替换以下内容:
String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("{Player1}", "Poep");
}
字符串卡的示例可以是:{Player1} 与您旁边的人交换饮料。
不知怎么的,我无法使用 {} 进行替换。随着 { 它说:"Dangling metacharacter"。截图:https://prnt.sc/s2bbl8
有解决办法吗?
您需要使用 \ 转义初始 {。即;
String card = "{Player1}";
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("\{Player1}", "Poep");
System.out.println("replace: " + replacedCard);
}
replaceAll
的第一个参数是一个被解析为 regalar Expression (regEx) 的字符串。大括号 { }
是特殊的保留元字符,用于在正则表达式中表达某些内容。要将它们作为普通字符进行匹配,您需要使用前导反斜杠 \
对它们进行转义,并且因为反斜杠也是一个特殊字符,您需要使用额外的反斜杠对自身进行转义:
String replacedCard = card.replaceAll("\{Player1\}", "Poep");
由于 replaceAll 方法的输入值需要正则表达式,因此您需要使用反斜杠对大括号进行转义。大括号是正则表达式上下文中的特殊字符。
在 Java 中,正则表达式中的反斜杠由双反斜杠 \
完成(参考 https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)。
所以你需要像这样调整线:
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.replace
:
String replacedCard = card.replace("{Player1}", "Poep");
因此,对于我在 Android Studio 中的应用,我想替换以下内容:
String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("{Player1}", "Poep");
}
字符串卡的示例可以是:{Player1} 与您旁边的人交换饮料。
不知怎么的,我无法使用 {} 进行替换。随着 { 它说:"Dangling metacharacter"。截图:https://prnt.sc/s2bbl8
有解决办法吗?
您需要使用 \ 转义初始 {。即;
String card = "{Player1}";
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("\{Player1}", "Poep");
System.out.println("replace: " + replacedCard);
}
replaceAll
的第一个参数是一个被解析为 regalar Expression (regEx) 的字符串。大括号 { }
是特殊的保留元字符,用于在正则表达式中表达某些内容。要将它们作为普通字符进行匹配,您需要使用前导反斜杠 \
对它们进行转义,并且因为反斜杠也是一个特殊字符,您需要使用额外的反斜杠对自身进行转义:
String replacedCard = card.replaceAll("\{Player1\}", "Poep");
由于 replaceAll 方法的输入值需要正则表达式,因此您需要使用反斜杠对大括号进行转义。大括号是正则表达式上下文中的特殊字符。
在 Java 中,正则表达式中的反斜杠由双反斜杠 \
完成(参考 https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)。
所以你需要像这样调整线:
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.replace
:
String replacedCard = card.replace("{Player1}", "Poep");