Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] Eliminare sottostringa da una Stringa

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Eliminare sottostringa da una Stringa

    Originariamente inviato da bako
    ora, è un problema di idea dell'algoritmo o di memoria tipo overflow ecc?
    Il problema è la tua idea dell'algoritmo.
    Partiamo dal presupposto che StringBuffer/StringBuilder sono mutabili (a differenza di String). Quindi in questo caso non serve creare un nuovo StringBuffer.

    Per cercare una stringa in uno StringBuffer si usa indexOf(). Una volta che l'hai trovata, la elimini con il metodo delete() (lo 'start' ce l'hai, il 'end' lo calcoli ... sai quanto è lunga la stringa cercata!).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    ma se lo faccio con lo stringTokenizer?
    ora provo

    Edit:

    lo string tokenizer mi toglie i caratteri e non l'intera stringa.

    del tuo post non ho capito gran che di quello che devo fare.
    al posto di stringBuffer posso usare lo string normale, usando il toString, cosa cambia?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bako
    ma se lo faccio con lo stringTokenizer?
    Con StringTokenizer i delimitatori sono solo singoli caratteri, non una stringa unica. Quindi nada ...

    Comuque potresti ottenere dallo StringBuffer un String o poi usare replace() sulla stringa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.