我想用java中的一個名爲myStr的字符串替換所有出現的+ - with - 。 我也想從myStr中替換所有出現的 - with +。 下面的代碼兩行沒有在Java中實現這一點:轉義+ - 和 - 在java中
myStr.replaceAll("\\+-", "-");
myStr.replaceAll("\\--", "+");
誰能告訴我如何改變的這兩行代碼來完成所需的替代品?
我通常會盡量避免正則表達式,但不知道如何在沒有它們的情況下執行此操作。
我想用java中的一個名爲myStr的字符串替換所有出現的+ - with - 。 我也想從myStr中替換所有出現的 - with +。 下面的代碼兩行沒有在Java中實現這一點:轉義+ - 和 - 在java中
myStr.replaceAll("\\+-", "-");
myStr.replaceAll("\\--", "+");
誰能告訴我如何改變的這兩行代碼來完成所需的替代品?
我通常會盡量避免正則表達式,但不知道如何在沒有它們的情況下執行此操作。
你拋出函數的返回值。你可能想使用:
myStr = myStr.replaceAll("\\+-", "-").replaceAll("--", "+");
更新與附加信息從評論:
一定要保持replaceAll
返回值。
myStr = myStr.replaceAll("\\+-", "-");
後來
myStr = myStr.replaceAll("--", "+");
public static String escapePlusMinus(String myStr) {
Pattern pattern = Pattern.compile("[+-]-");
Matcher matcher = pattern.matcher(myStr);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
if (matcher.group(0).equals("+-")) {
matcher.appendReplacement(result, "-");
}
else {
matcher.appendReplacement(result, "+");
}
}
matcher.appendTail(result);
return result.toString();
}
escapePlusMinus("+-, --, +-, ---+---")
⇒ "-, +, -, +--+"
的最後一個記號匹配爲:
"--"
⇒ "+"
"-"
跳過,因爲在它後面沒有另一個"-"
。"+-"
⇒ "-"
"--"
⇒ "+"
使用你想逃避的字符前的反斜槓:'\ + \ - '和'\ - \ - '。 – Jerry
@Jerry謝謝。我試過newSubStr.replaceAll(「\ + \ - 」,「 - 」);但是eclipse現在給了我下面的錯誤信息:無效的轉義序列(有效的轉義序列是\ b \ t \ n \ f \ r \「\'\\) – CodeMed
當你有' -',因爲它會打印' - +',不過我猜你希望它是'-'。 – Maroun