[英]How to replace a string in java if replacement string contains special(some regex) character
我正在嘗試替換Java中的字符串,其中我的替換字符串包含的特殊字符如下所示。
String s1 = char(1)+"abc"+char(1);
String s2 = "!@#$%^&*()-_`~";
String s3 = s.replaceAll(s1, s2);
上面寫的代碼拋出java.lang.IllegalArgumentException:非法的組引用
您應該使用正則替換,而不是需要正則表達式的replaceAll
。
用指定的文字替換序列替換此字符串中與文字目標序列匹配的每個子字符串。
樣本( http://ideone.com/HbV9eO )
String s= "\u0001abc\u0001more\u0001abc\u0001";
String s1 = "\u0001abc\u0001";
String s2 = "!@#$%^&*()-_`~";
String s3 = s.replace(s1, s2);
System.out.println("new string = " + s3);
Alexei Levenkov的答案中建議的String.replace(CharSequence, CharSequence)
是您要用字面意義上的另一個字符串替換字符串的方法。
為了完整起見,如果要使用replaceAll進行文字字符串替換,則需要同時引用模式字符串和替換字符串,以便對它們進行文字處理(即沒有任何特殊含義)。
inputString.replaceAll(Pattern.quote(pattern), Matcher.quoteReplacement(replacement));
Pattern.quote(String)
創建一個從字面上匹配指定字符串的模式。
Matcher.quoteReplacement(String)
為指定的字符串創建一個文字替換字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.