2014-06-28 84 views
7

我试图用我的字符串替换所有方括号。java.util.regex.PatternSyntaxException:索引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) 

有谁请告诉我如何更换所有方括号?

回答

20

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

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

或者你可以如果你想,无论是在一气呵成替换使用正则表达式:

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

这是说“替换集中的任何字符(左方括号, \\是为了逃避方括号内的集合

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

+0

谢谢,工作正常,很高兴再次见到你:) – Kiran

+0

你救了我:-) – Hanry

相关问题