0

すべてのインスタンスを次のように置き換えたい

{IMAGE:imagename}imagepath

{MESSAGE:messagename} with message .

string クラスの replaceAll 関数を使用してみましたが、同じことはできませんでした。

コード例:

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)
4

6 に答える 6

0

{および}は、繰り返しをマークするために正規表現で使用される特殊文字です。または、すべての特殊文字をエスケープするを\\使用して、それらをエスケープしてみてください。Matcher.quoteReplacement("{IMAGE:abcd}")

于 2013-05-03T06:28:12.267 に答える
0

このreplaceAllメソッドは、正規表現であると想定されるreplaceAll(String Regex, String replacement)場所としてパラメーターを受け取ります。Regexしたがって、次を使用することをお勧めします。

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

それ以外の

str.replaceAll("{IMAGE:abcd}", "defg");
于 2013-05-03T06:28:28.923 に答える
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);
  }
}  

私はそれがあなたの問題を解決すると思います。

于 2013-05-03T06:29:01.500 に答える
0

試す。

 str = str.replaceAll("\\{IMAGE:abcd\\}", "defg");
于 2013-05-03T06:29:23.550 に答える
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);
    }
}
于 2013-05-03T06:29:51.500 に答える