05/11/13 17:09
Sevenjeak
In questo periodo sto facendo un mio editor in java, dove, ho un problema con del codice, vorrei creare la funzione, trova e sostituisci, per ora sto facendo la funzione che trova il testo desiderato, trova la prima occorrenza trovata del testo, e le occorrenze successive, il codice è questo:
Questo codice lo eseguo alla pressione di un tasto, e come potete vedere mi trova il testo nell'oggetto textPane ( un JTextPane ), ora, il problema è che, quando, nella JTextPane scrivo:
ciao ciao
la prima volta che eseguo il codice mi sottolinea il primo ciao ( a partire dal caratteri all'indice 0 fino alla fine della frase, poi se, premo di nuovo il pulsante mi sottolinea il secondo ciao, come in effetti vorrei io, e fin qui e tutto ok, il problema è quando li faccio trovare una parola collocata in un'altra riga, mi funziona bene solo per la prima riga, cioè, se ad esempio, nella seconda riga, io ho la stringa come va e la vorrei trovare, utilizzando il codice qui sopra, mi sottolinea ome va, insomma mi sottolinea in modo errato, questo mi succede a partire dalla seconda riga in poi.
Ho pensato, facendo stampare i numeri di indice sottolineati, ché forse mi considerava il carattere a capo.
Detto questo ho pensato di levare dalla testo preso il caratteri a capo, ma non saprei, e se l'utente immette manualmente quel carattere nel testo? ho pensato anche di compiere la ricerca riga per riga, ma non saprei, ecco perché scrivo qui.
Come potrei risolvere, mi conviene fare eseguire la ricerca su ogni riga o c'è un altro metodo per risolvere il mio problema?
String originText = textPane.getText(); String findWord = wfind.getText(); if (index != -1) { index = originText.indexOf(findWord, index + findWord.length()); }else { index = originText.indexOf(findWord); } System.out.println(index + " ; " + findWord.length()); if (index == -1) { JOptionPane.showMessageDialog(null, "Nessuna occorrenza trovata"); }else { textPane.grabFocus(); textPane.select(index, index + findWord.length()); }
Questo codice lo eseguo alla pressione di un tasto, e come potete vedere mi trova il testo nell'oggetto textPane ( un JTextPane ), ora, il problema è che, quando, nella JTextPane scrivo:
ciao ciao
la prima volta che eseguo il codice mi sottolinea il primo ciao ( a partire dal caratteri all'indice 0 fino alla fine della frase, poi se, premo di nuovo il pulsante mi sottolinea il secondo ciao, come in effetti vorrei io, e fin qui e tutto ok, il problema è quando li faccio trovare una parola collocata in un'altra riga, mi funziona bene solo per la prima riga, cioè, se ad esempio, nella seconda riga, io ho la stringa come va e la vorrei trovare, utilizzando il codice qui sopra, mi sottolinea ome va, insomma mi sottolinea in modo errato, questo mi succede a partire dalla seconda riga in poi.
Ho pensato, facendo stampare i numeri di indice sottolineati, ché forse mi considerava il carattere a capo.
Detto questo ho pensato di levare dalla testo preso il caratteri a capo, ma non saprei, e se l'utente immette manualmente quel carattere nel testo? ho pensato anche di compiere la ricerca riga per riga, ma non saprei, ecco perché scrivo qui.
Come potrei risolvere, mi conviene fare eseguire la ricerca su ogni riga o c'è un altro metodo per risolvere il mio problema?
aaa