Newsgroup: it.comp.java
Titolo: Sostituire carattere in un file

Ciao,
ho un file di testo che contiene al suo interno una cosa del genere :
 LONG = 04-24-26-E, LAT = 41-07-29-N, DESCR = "BARI AUTOS, UMTS e GSM",
 DESCR2 = "OK vai", H_SLM = 10 BEGIN RBD "UC, VR53U2" T317 = 180
 
Ora dovrei sostituire il carattere virgola(,) con il carattere & ,MA SOLO se
essa č
delimitata dalle virgolette, cioč dovrei ottenere una cosa del genere :
 LONG = 04-24-26-E, LAT = 41-07-29-N, DESCR = "BARI AUTOS& UMTS e GSM",
DESCR2 = "OK vai", H_SLM = 10 BEGIN RBD "UC& VR53U2" T317 = 180
 
Mi date un'aiuto x come potrei farlo?
Grazie
Nicola
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 writes:
 
c> Mi date un'aiuto x come potrei farlo?
Perché reinventare la ruota in Java quando il programma che ti serve
esiste e si chiama sed (anche per Windows)
sed -e 's/\("[^,]*\),\([^"]*"\)/\1\&\2/' < origine > destinazione
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

 esiste e si chiama sed (anche per Windows)
Non si reiventa nessuna ruota, le operazioni con le espressioni regolari 
esistono anche in Java.

 sed -e 's/\("[^,]*\),\([^"]*"\)/\1\&\2/' < origine > destinazione
Purtroppo io il contenuto del file l'ho all'interno in un 'array di byte
estratti da un file zippato.
In pratica devo leggere il contenuto del file zippato un certo numero di
byte x volta, e su questi agire la sostituzione, dopodiche "riscrivere" i
byte modificati di nuovo in quel file.
Spero di essermi spiegato, altrimenti posto un pò di codice.
Grazie
nicola


Mi potreste dari un pò di codice di esempio per le regular expression che
non conosco!!
Grazie 1000 ancora
nicola


 non conosco!!
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html
Vedi l'esempio al metodo appendReplacement().

> serve esiste e si chiama sed (anche per Windows)
VV> Non si reiventa nessuna ruota, le operazioni con le espressioni
VV> regolari esistono anche in Java.
Si,  ma  il resto  del  programma lo  devi  riscrivere.  E' quella  la
reinvenzione della ruota, il riscrivere un programma che fa quello che
già fa sed!!!!


 già fa sed!!!!
Si, ma come vedi lo scenario è già un po diverso. Il file è già uno
stream java.

> sed -e 's/\("[^,]*\),\([^"]*"\)/\1\&\2/' < origine > destinazione
c> Purtroppo io il contenuto del file l'ho all'interno in un 'array di
c> byte estratti da un file zippato.
c> In pratica devo leggere il contenuto del file zippato un certo
c> numero di byte x volta, e su questi agire la sostituzione,
Azz, nel post iniziale sembrava ti volessi ripulire il file.
Usando le classi che ti ha indicato Vincent poi usare la regexp
ed il replacement indicati.
regexp : \("[^,]*\),\([^"]*"\)
Se non č chiara, questa regexp č formata da due gruppi separati da una
virgola. Il primo  gruppo fa il match  con un " seguito da  zero o piů
caratteri che  non sono virgola, il  secondo con zero  o piů caratteri
che non sono " seguiti da un ".
matcher : $1&$2
$1 e $2 sono i gruppi di cui sopra.
c> dopodiche "riscrivere" i byte modificati di nuovo in quel file.
Nello stesso file zippato ???? Hmmmm....


> che già fa sed!!!!
VV> Si, ma come vedi lo scenario è già un po diverso. Il file è già
VV> uno stream java.
Già visto e già risposto. Ma quando uno dice:
"Ciao,
ho un file di testo che contiene al suo interno una cosa del genere :"
e poi dice che deve fare un  replacement, mai più e mai poi mi invento
tutto il resto del problema che c'è intorno.
// In ogni caso il fatto che debba tornare in un file dopo la pulitura...
