[英]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.