Salve.
Ho da eliminare una stringa da un file di testo.
Il file di testo è caricato in un StringBuffer.
ora, il codice che ho fatto io è:
codice:
tringBuffer sb;
        try {
            sb = getPDFText(new File("Z:\\a.pdf"));
            String s1 = "Questa è la sotto stringa che devo eliminare";
            int pos=1;
            int i=sb.indexOf(s1);
            String finale="";
            while ((i>=0 && pos >=0)) {   
                System.out.println("i " + i + " pos "+pos );
                finale+=sb.substring(pos,i);                
                pos=i+s1.length();
                sb=new StringBuffer(sb.substring(pos,sb.length()));
                i=sb.indexOf(s1);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
ora l'output mi da:

codice:
INFO: Deriving Type3 font information when necessary: yes
i 46 pos 1
i 1519 pos 132
i 7082 pos 1605
i 4463 pos 7168
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -2705
        at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:882)
        at java.lang.StringBuffer.substring(StringBuffer.java:417)
        at leggerepdf.LeggiPDF.<init>(LeggiPDF.java:57)
        at leggerepdf.LeggiPDF.main(LeggiPDF.java:77)
Java Result: 1
dove riga 57 è
codice:
finale+=sb.substring(pos,i);
ora, è un problema di idea dell'algoritmo o di memoria tipo overflow ecc?

grazie