我想删除 "[同译者作品][同作者作品]",我的代码如下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也没报错啊?
大家帮忙看看,
这里的“[同作者作品]”个数和位置都不是固定的,有没有更好的解决方法?

解决方案 »

  1.   

    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公司[同作者作品]");
    }}
      

  2.   

    str.replaceAll("[同译者作品]","");
    str.replaceAll("[同作者作品]","");
      

  3.   

    如果字符串太长用String恐影响效率,可换成StringBuffer
      

  4.   

    我用的是jdk1.4,编译通不过
    if("[".equals(str.charAt(i))) 
    这句提示String没有equals( char )这个方法
    也许高版本的可以
    我觉得应该这样写
    if( '[' == str.charAt( i ) )
      

  5.   

    import java.util.*; 
    import java.text.*;public class test6{
    public static void main(String [] args) {
    String str = " o'reilly[同译者作品][同作者作品] taiwan公司"; 
    str=str.replaceAll("\\[同译者作品\\]",""); 
    str=str.replaceAll("\\[同作者作品\\]","");
    System.out.println(str);
    }
    }
      

  6.   


    String str = "o'reilly[同译者作品][同作者作品] taiwan公司";
    int c = 0;
    for (int i = 0; i < str.length(); i++) {
    if ("[".equals(new Character(str.charAt(i)).toString())) {
    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);
    equals方法里面必须使用封装类,charAt方法返回的基本类型char不能使用的,除非是jdk1.5的自动装相拆箱,不然是会编译错误的。
    该结果返回正常。算法没仔细看,应该正确。
      

  7.   

    String str = "o'reilly[同译者作品][同作者作品] taiwan公司";
    int c = 0;
    for (int i = 0; i < str.length(); i++) {
    if ("[".equals(new Character(str.charAt(i)).toString())) {
    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);