![](/img/trans.png)
[英]Java replace curly brackets string using replaceAll when the value is in variable, java 8
[英]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} 與您旁邊的人交換飲料。
不知何故,我無法使用 {} 進行替換。 用 { 它說:“懸空元字符”。 截圖: https://prnt.sc/s2bbl8
有解決方案嗎?
replaceAll
的第一個參數是一個被解析為正則表達式(regEx) 的字符串。 大括號{ }
是特殊的保留元字符,用於在正則表達式中表達某些內容。 要將它們匹配為普通字符,您需要使用前導反斜杠\
將它們轉義,並且因為反斜杠也是特殊字符,您需要使用額外的反斜杠對其自身進行轉義:
String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");
兩個{ }
都是保留的正則表達式字符。 由於replaceAll()
function 接受正則表達式參數,因此您必須明確 state 即{
和}
是實際字符串的一部分。 您可以通過在它們前面加上轉義字符來做到這一點: \
。 但是因為轉義字符也是保留字符,所以你也需要轉義它。
這是編寫代碼的正確方法:
String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");
}
您需要使用 \ 轉義初始 {。 IE;
String card = "{Player1}";
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("\\{Player1}", "Poep");
System.out.println("replace: " + replacedCard);
}
由於 replaceAll 方法的輸入值需要一個正則表達式,因此您需要使用反斜杠轉義大括號。 花括號是正則表達式上下文中的特殊字符。
In Java a backslash in a regex is accomplished by a double backslash \\
(see https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html for reference).
所以你需要像這樣調整這條線:
String replacedCard = card.replaceAll("\\{Player1\\}", "Poep");
String.replaceAll
方法需要一個正則表達式。 其他答案已經為此提供了解決方案。 但是,如果您不需要正則表達式,那么您也可以使用String.replace
:
String replacedCard = card.replace("{Player1}", "Poep");
{} 是正則表達式的特殊字符。 replaceAll 方法將正則表達式作為第一個參數,因此如果您還想替換大括號,則必須用 \\ 跳過它們,如下所示:
String card = cards.get(count).getCard();
if (card.contains("{Player1}")) {
String replacedCard = card.replaceAll("\\{Player1}", "Poep");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.