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