当前位置: 首页 > 面试题库 >

java.util.regex.PatternSyntaxException:索引0附近的未封闭字符类

杜经艺
2023-03-14
问题内容

我正在尝试替换我的弦上的所有方括号。

这是我的程序

   package com;

import java.util.ArrayList;

import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;

public class Teste {

    /**
     * @param args
     * @throws JSONException 
     */
    public static void main(String[] args) throws JSONException {


        String str = "[Fountain#Apple#Big(7)]";

        str.replaceAll("[", "").replace("]", "");

        System.out.println(str);

    }

}

但是我越来越

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at com.Teste.main(Teste.java:19)

有人可以告诉我如何更换所有方括号吗?


问题答案:

String.replaceAll采用正则表达式模式,但是您根本不需要正则表达式。您可以使用:

str = str.replace("[", "").replace("]", "");

或者,您 也可以根据需要 使用正则表达式,一次性替换两者:

str = str.replaceAll("[\\[\\]]", "");

这就是说“用空字符串替换集合中的任何字符(开方括号,闭方括号)。这\\是为了使集合中的方括号转义。

请注意,您需要使用replace(或replaceAll)的结果-字符串在Java中是不可变的,因此任何类似的方法replace都不会修改
现有 字符串,它们会返回对带有相关修改的 字符串的引用。



 类似资料: