簡體   English   中英

如何替換字符串中的括號

[英]How to replace brackets in strings

我有一個包含令牌的字符串列表。
令牌是:

{ARG:TOKEN_NAME}。

我還有令牌的哈希映射,其中key是令牌,value是我想用令牌代替的值。

當我使用“replaceAll”方法時,我收到錯誤:

java.util.regex.PatternSyntaxException:非法重復

我的代碼是這樣的:

myStr.replaceAll(valueFromHashMap , "X"); 

和valueFromHashMap包含{和}。

我把這個hashmap作為參數。

String.replaceAll()適用於String.replaceAll() {n,m}通常在regexp中重復。

如果要匹配文字括號,請嘗試使用\\\\{\\\\}

因此,用X替換所有左括號都是這樣的:

myString.replaceAll("\\{", "X");

請參閱此處以了解正則表達式(regexps)以及為什么{}是使用regexp時必須轉義的特殊字符。

正如其他人已經說過的那樣, {是模式中使用的特殊字符( } )。 你必須逃避它以避免任何混淆。

手動轉義這些可能是危險的(你可能會省略一個並使你的模式完全錯誤)和乏味(如果你有很多特殊字符)。 處理這個的最好方法是使用Pattern.quote()


相關問題:

資源:

replaceAll()將正則表達式作為參數, {是正則表達式中的特殊字符。 為了讓正則表達式將其視為常規字符,它必須由\\來轉義,必須由另一個\\再次轉義,以便Java接受它。 所以你必須使用\\\\{

您可以使用帶方括號的行中的.replaceAll()刪除大括號

String newString = originalString.replaceAll("[{}]", "X")

例如:newString =“ARG:token_name”

如果你想進一步將newString分隔為鍵和值,你可以使用.split()

String[] arrayString = newString.split(":")

使用arrayString,您可以將它用於帶有.put()arrayString[0]arrayString[1] HashMap

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM