Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Java] eliminare parti di string ripetute n volte

    Salve a tutti..
    Ho un bel problema...
    Ho creato un Db, con una tabella Annunci, con degli attributi id,....,descrizione.
    Quest'ultimo è in formato String.
    Vorrei prendere tutte le descrizioni di ogni annuncio e confrontarle tra di loro.
    Immaginiamo abbia 5 descrizioni.
    Id=1 Descrizione= "Offerta di lavoro: ingegnere informatico; Annuncio offerto da Bacheca.it "
    Id=2 Descrizione= "Offerta di lavoro: tecnico informatico; Annuncio offerto da Bacheca.it"
    Id=3 Descrizione= "Offerta di lavoro: idraulico informatico; Annuncio offerto da Annunci.it"
    Id=4 Descrizione= "Offerta di lavoro: programmatore Java; Annuncio offerto da Bacheca.it"
    Id=5 Descrizione= "Offerta di lavoro: Perito meccanico; Fonte: Lavoro.it"

    Di queste cinque stringhe vorrei eliminare, quelle parti di testo che sono state ripetute 4 volte.
    In sostanza Offerta di lavoro: (count 5), Annuncio offerto da(count 4).
    in modo da avere:
    Id=1 Descrizione= "ingegnere informatico; Bacheca.it "
    Id=2 Descrizione= "tecnico informatico; Bacheca.it"
    Id=3 Descrizione= "idraulico informatico; Annunci.it"
    Id=4 Descrizione= "programmatore Java; Bacheca.it"
    Id=5 Descrizione= "Perito meccanico; Fonte: Lavoro.it"

    Ovviamente, il riconoscimento delle parti di testo che sono state ripetute per 4 volte, deve essere fatto in modo automatico.
    Qualche idea??? C'è qualche libreria che lo potrebbe fare?

    Grazie in anticipo.

    Ciao Francesco

  2. #2
    Ciao, guarda è semplice:

    codice:
    public String[] dividiDati(String stringa, String delimInizio, String delimFine) {
            return new String[]{stringa.substring(stringa.indexOf(delimInizio)+delimInizio.length(), stringa.indexOf(delimFine)),stringa.substring(stringa.indexOf(delimFine) +delimFine.length())};
        }
    Dove:

    <stringa> è la stringa da dividere, nel tuo caso "Offerta di lavoro: ingegnere informatico; Annuncio offerto da Bacheca.it "

    <delimInizio> è la stringa delimitatore all'inizio, nel tuo caso "Offerta di lavoro:"

    <delimFine> è la stringa delimitatore alla fine, nel tuo caso "Annuncio offerto da"

    Il metodo ritorna un array di stringhe di 2 posizioni che, nel tuo caso, contiene "ingegnere informatico;" in posizione 0, e "Bacheca.it" in posizione 1.

    Ovviamente questo funziona solo se hai un testo da dividere in due stringhe, se ti serve dividere in n stringhe con n delimitatori devi "sviluppare" questo metodo e ciclare sulle stringhe fin quando non hai tutti i dati che ti servono
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  3. #3
    No...non mi sono spiegato...
    le mie stringhe erano solo esempi....io non so i contenuti delle stringhe, e devo creare una funzione che mi trova le parti uguali che vengono ripetute per almeno 4 volte. Ed infine cancellarle.

  4. #4
    Ah, non avevo capito, bè devi ciclare sulle stringhe che ti tira fuori il ResultSet e analizzarle, per poi applicare un metodo simile al mio che tolga via quelle parti che si ripetono per più di 4 volte
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    C'è un problema fondamentale...
    Le stringhe comuni potrebbero essere considerate come
    Offerta
    Offerta di
    Offerta di lavoro
    Off
    Offerta d
    ...

    è questo complica l'algoritmo che vuoi creare, inoltre supponi di avere quattro campi con scritto, che ne so, "tecnico informatico", ma offerti da siti diversi: questi verrebbero cancellati...

    In ogni caso puoi farlo con due cicli innestati, con quello fuori cicli sulla prima stringa e con quello interno guardi se i caratteri sono uguali, se non lo sono cambi punto di partenza...

    Edit: questo fa al caso tuo... Prima ricerca su google dopo averti risposto...
    http://en.wikibooks.org/wiki/Algorit...mmon_substring
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Grazie Scara...
    Nel caso, le stringhe sono tante, come posso fare?
    Con quel codice posso confrontare solo 2 stringhe...

    Per il problema tecnico informatico, non mi preoccupa, perché se ho 500 stringhe prendo le parti in comune di 490 stringhe...

    In ogni caso grazie...provo a vedere il codice dell'algoritmo della common substring

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Cerchi la stringa comune a due, se questa e superiore a tot caratteri, per esssere sicuri che non sia qualcosa tipo 'di' o un segno di punteggiatura, controlli se é comune anche alle altre stringhe...

    Per controllare se una data stringa e una substring di un'altra ci deve essere una funzione di libreria, che però al momento non ricordo...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Ah,l'approccio che ti ho consigliato può essere migliorato...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.