2016-01-20 2 views
0

Я делаю метод, который должен заменить все «^», «^». Но я использую .replaceAll(), и это принимает регулярное выражение в качестве параметра, а каретка (^) означает не или все, кроме в регулярном выражении. Для этого нет даже символа побега.Java | Пропустить каретку через регулярное выражение

Так как мне это сделать?

String a = "8^2"; 

public static String magicMethod(String a) { 
    return a.replaceAll("^", "^"); // makes everything compile funny 
} 
+1

Вы должны быть в состоянии избежать карат с '\\ ^' –

ответ

3

Вы можете избежать всех специальных регулярных выражений символы с помощью обратной косой черты (\). Поскольку обратная косая черта также является символом escape-символа Java String, вам нужно удвоить его при записи в виде строки Java.

a.replaceAll("\\^", "^") 

Если вы хотите использовать replaceAll() и строка поиска и/или стоимость замещения является простым текстом, вы можете иметь строки автоматически экранируетесь для вас.

a.replaceAll(Pattern.quote("^"), Matcher.quoteReplacement("^")) 

Это обычно используется, когда строка поиска и/или значение замены являются динамическими. Когда константа, как и в вашем случае, выполняется с помощью обратного слэша.

2

Вы должны

экранирования в ^
return a.replaceAll("\\^", "^"); // makes everything compile funny 

^ в регулярном выражении означает начало строки

Смежные вопросы