View Full Version : Java e JFlex
Gandalf_BD
06-02-2007, 12:21
Ciao a tutti...
Java e JFlex mi stanno facendo dannare per una cagata...
allora... io ho una stringa in ingresso che, tramite uno scanner JFlex devo passare al parser.
La stringa termina con uno \n, ma al parser viene passato come se fosse \\n, dato che viene stampato a video "\n", anzichè un "a capo" (mi sono spiegato? :mbe: ).
Allora ho pensato di usare il metodo replace, per sostituire \\ con un solo \... il problema è che non riesco a farla funzionare!!Error in file "scanner.flex" (line 21):
Unexpected character
temp.replace('\\','\');
è l'errore che mi viene fuori... ho già provato un po' tutte le maniere, ma non riesco a capire perchè non funziona... :muro: :muro: :muro: mi potete aiutare? :help:
grazie :)
Allora ho pensato di usare il metodo replace, per sostituire \\ con un solo \... il problema è che non riesco a farla funzionare!!Error in file "scanner.flex" (line 21):
Unexpected character
temp.replace('\\','\');
è l'errore che mi viene fuori... ho già provato un po' tutte le maniere, ma non riesco a capire perchè non funziona... :muro: :muro: :muro: mi potete aiutare? :help:
grazie :)Il metodo replace() di String ha 2 versioni in overload:
String replace(char oldChar, char newChar)
e
String replace(CharSequence target, CharSequence replacement)
Dal momento che hai messo dei parametri tra apici singoli, in pratica stai usando la prima versione, che è in grado di sostituire 1 solo carattere con 1 altro carattere.
Devi quindi usare la seconda versione, ad esempio con:
temp.replace ("\\\\", "\\");
Gandalf_BD
06-02-2007, 13:01
EDIT3: ALEEEEEEEEEEEE-OOOOOHOOOOOOOOOOO!!!
ora funziona!! (non chiedetemi perchè...) grazie mille :) :mano: :cincin:
per i mods: potete chiudere :)
---------------------------------------------------------
niente... non funziona :(
cioè... compila tutto alla perfezione, ma poi non sostituisce un bel niente... :doh:
vabe'... l'ho risolta andandomi a cercare e sostituire a manina lo \n
EDIT: però è strano... se uso la endsWith() (dato che lo \n è al fondo) lo trova... se uso la replace no! :muro: :muro:
EDIT2: oh, ma questa è da "Oggi le comiche"!!!
ho provato a usare la replaceAll su un altra lettera della stringa e funziona... se poi la provo su "\n" o "\\n" niente!! :muro: :muro: :muro:
niente... non funziona :(
cioè... compila tutto alla perfezione, ma poi non sostituisce un bel niente... :doh: A scanso di equivoci ... non l'ho detto prima ma lo dico adesso: il metodo replace (così come tutti gli altri metodi di String) non tocca minimamente la stringa su cui è invocato! Restituisce una nuova stringa.
Quindi, pur non sapendo come è fatto il tuo codice, dovresti fare ad esempio:
temp = temp.replace ("\\\\", "\\");
Gandalf_BD
06-02-2007, 15:34
A scanso di equivoci ... non l'ho detto prima ma lo dico adesso: il metodo replace (così come tutti gli altri metodi di String) non tocca minimamente la stringa su cui è invocato! Restituisce una nuova stringa.
Quindi, pur non sapendo come è fatto il tuo codice, dovresti fare ad esempio:
temp = temp.replace ("\\\\", "\\");
esatto... ha iniziato a funzionare solo quando allocavo una nuova stringa!
grazie ancora ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.