日期:2014-05-20  浏览次数:20632 次

请教一个字符串的问题?
我想删除 "[同译者作品][同作者作品]",我的代码如下

String str = o'reilly[同译者作品][同作者作品] taiwan公司";
int c=0;
for(int i=0; i<str.length(); i++)
{
if("[".equals(str.charAt(i)))
{
c++;
}
}
System.out.println(c);
for(int j=0; j<c ; j++)
{
str = str.substring(0, str.indexOf("[")).concat(str.substring(str.indexOf("]")+1,str.length()));
}
System.out.println(str);

但是c为0,不知道是什么原因,if("[".equals(str.charAt(i)))这么写是不是有问题,java也没报错啊?
大家帮忙看看,
这里的“[同作者作品]”个数和位置都不是固定的,有没有更好的解决方法?

------解决方案--------------------
Java code
public class C {

    public static void operate(String str){

        while(str.indexOf("[") >= 0)
            str = str.substring(0, str.indexOf("[")).concat(str.substring(str.indexOf("]")+1,str.length())); 
        System.out.println(str); 
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        C.operate("[同作者作品]o'reilly[同译者作品][同作者作品] taiwan公司[同作者作品]");
    }

}

------解决方案--------------------
str.replaceAll("[同译者作品]","");
str.replaceAll("[同作者作品]","");
------解决方案--------------------
Java code

String str = "o'reilly[同译者作品][同作者作品] taiwan公司";
        int c = 0;
        for (int i = 0; i < str.length(); i++) {
            if ("[".equals([color=#FF0000]new Character(str.charAt(i)).toString()[/color])) {
                c++;
            }
        }
        System.out.println(c);
        for (int j = 0; j < c; j++) {
            str = str.substring(0, str.indexOf("[")).concat(
                    str.substring(str.indexOf("]") + 1, str.length()));
        }
        System.out.println(str);