簡體   English   中英

java.util.regex.PatternSyntaxException:索引0附近的未閉合字符類

[英]java.util.regex.PatternSyntaxException: Unclosed character class near index 0

我試圖替換我的字符串中的所有方括號。

這是我的計划

   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都不會修改現有字符串,它們會返回對具有相關修改的字符串的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM