2013-05-03 4 views
0

Я хочу, чтобы заменить все экземпляры какЗаменить все экземпляры последовательности в Java

{IMAGE: ImageName} с ImagePath,

{MESSAGE: messagename} с сообщения.

Я попытался использовать функцию replaceAll класса string, но не смог добиться того же.

Пример кода:

String str = "HELLO WORLD {IMAGE:abcd}"; 
str = str.replaceAll("{IMAGE:abcd}", "defg"); 

Выход:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition 
{IMAGE:abcd} 
    at java.util.regex.Pattern.error(Pattern.java:1713) 
    at java.util.regex.Pattern.closure(Pattern.java:2775) 
    at java.util.regex.Pattern.sequence(Pattern.java:1889) 
    at java.util.regex.Pattern.expr(Pattern.java:1752) 
    at java.util.regex.Pattern.compile(Pattern.java:1460) 
    at java.util.regex.Pattern.<init>(Pattern.java:1133) 
    at java.util.regex.Pattern.compile(Pattern.java:823) 
    at java.lang.String.replaceAll(String.java:2189) 
    at com.example.WorkSheet.main(WorkSheet.java:28) 

ответ

3

{ регулярное выражение метасимволом и должны быть экранированы, попробуйте этот

str = str.replaceAll("\\{IMAGE:abcd}", "defg"); 

НЕТ что этого достаточно, чтобы избежать {, компилятор regex поймет, что } используется как обычный символ.

0

{ и } являются специальными символами, используемыми в регулярном выражении для маркировки реплик. Попробуйте избежать их с помощью \\ или используйте Matcher.quoteReplacement("{IMAGE:abcd}"), что ускользает от всех специальных символов.

0

Метод replaceAll принимает параметры как replaceAll(String Regex, String replacement), где Regex должен быть регулярным выражением. Таким образом, вы можете использовать:

str.replaceAll("\\{IMAGE:abcd}","defg"); 

вместо

str.replaceAll("{IMAGE:abcd}", "defg"); 
0

Вы должны бежать символ "{", как показано ниже:

public class A{ 
public static void main(String[] args) { 

    String str = "HELLO WORLD {IMAGE:abcd}"; 
    str = str.replaceAll("\\{IMAGE:abcd\\}", "defg"); 
    System.out.println(str); 
    } 
} 

Я думаю, что он будет решать ваши проблема.

0

попробуйте.

str = str.replaceAll("\\{IMAGE:abcd\\}", "defg"); 
0
import java.util.*; 
public class A 
{ 
    public static void main(String [] args) 
    { 
     String str = "HELLO WORLD {IMAGE:abcd}"; 
str = str.replaceAll("\\{IMAGE:abcd}", "defg"); 
    System.out.println(str); 
    } 
} 
Смежные вопросы