Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-12-2009, 19:14   #1
Checco83
Junior Member
 
Iscritto dal: Nov 2009
Messaggi: 13
[Java] Espressioni Regolari

Ciao a tutti! Ancora una volta ho bisogno di un vostro aiuto!!
Il mio problema è questo : ho un file di testo contenente una stringa per riga; vorrei poter fare in modo che TUTTE queste stringhe terminino con " ;" (spazio seguito dal punto e virgola senza le virgolette)...
quindi se ho qualcosa del tipo :
select * from users deve diventare select * from users ;

Leggendo un po' su Internet mi pare di aver capito che potrei usare delle espressioni regolari, ma sinceramente documentandomi un po' c'ho capito veramente poco.

P.S. prima del ; finale deve essere presente un solo spazio, quindi se la stringa termina con uno spazio bisogna aggiungere solo il ; alla fine

Grazie Mille
Checco83 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 19:42   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Le espressioni regolari sono l'anticamera dell'alcolismo, se non devi cercare pattern complessi è meglio evitarle.

Se ho la stringa:

String line = "select * from users"

e dico:

line = line + " ;"

la stringa diventa:

"select * from users ;"

Se la stringa termina con uno spazio aggiungi solo ";" sarebbe:

Codice:
if(line.endsWith(" ")) {
    line += ";";
} else {
    line += " ;";
}
(line += x) vale come (line = line + x).

Viene da chiedersi se la linea possa terminare con più di uno spazio, tipo:

"select * from "

Qui l'if non va più bene.

Opzione 1, "trim". Il metodo trim degli String elimina gli spazi all'inizio e alla fine della stringa:

line = line.trim() + " ;"

garantisce che la linea termini sempre e solo con uno spazio e un punto e virgola, tagliano eventuali spazi iniziali.

Se vuoi preservare gli spazi iniziali passi al "fai da te":

while(line.endsWith(" ")) line = line.substring(0, line.length() - 1);
line += " ;";

Questo funziona come il precedente ma lascia eventuali spazi iniziali.

Insomma, c'è di che sbizzarrirsi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 20:03   #3
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,

Forse ho letto di fretta e mi sfugge qualche dettaglio specifico, ma una:
Codice:
if(!line.endsWith(";"))
   line+=";";
Iterata su tutte le linee del file non sarebbe un po'più pratica?

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 10:39   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da bottomap Guarda i messaggi
Ciao,

Forse ho letto di fretta e mi sfugge qualche dettaglio specifico, ma una:
Codice:
if(!line.endsWith(";"))
   line+=";";
Iterata su tutte le linee del file non sarebbe un po'più pratica?

Ciaociao
Sarebbe più pratica ma non soddiferebbe tutti i requisiti.
In particolare non aggiungerebbe il carattere di spazio prima del ";", come invece richiesto dall'utente.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 11:00   #5
Checco83
Junior Member
 
Iscritto dal: Nov 2009
Messaggi: 13
Innanzitutto grazie mille per le risposte, siete gentilissimi!!
Ho risolto, almeno spero, quasi tutti i problemi con il vostro aiuto solo che ne ho ancora uno
Se ho una stringa del tipo :
Select * from utenti;
in base a quanto scritto mi verrebbe aggiunto il " ;" alla fine ottenendo quindi
Select * from utenti; ;
Quello che vorrei ottenere,invece, è Select * from utenti ;
quindi praticamente dire che ogni qualvolta ho una stringa che termina con un qualsiasi carattere subito seguito dal ; deve aggiungermi uno spazio prima del ; ...E' possibile fare questo?! (Ditemi di si vi prego!!! )
Ancora grazie mille
Checco83 è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 11:07   #6
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Posta il codice interessato così si aggiusta quello, altrimenti ti continuano ad arrivare nuove soluzioni.

Ad ogni modo se la tua stringa è s, in questo caso specifico

Codice:
s = s.trim();

if(s.endWith(";"))
    s = s.substring(0, s.length()-2) + " ;";
Può andare?

Ultima modifica di ndakota : 04-12-2009 alle 11:09.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 11:41   #7
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ah, ecco... mi ero perso qualcosa, ma in questo caso:
Codice:
if(!line.endsWith(";")){
   if(!line.endsWith(" ")){
      line+=" ";
   } 
   line+=";";
}
Se già finisce con ; non viene toccata
Se finisce con spazio viene aggiunto il solo ;
Se finisce in qualsiasi altro modo viene aggiunto spazio e ;

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 12:13   #8
Checco83
Junior Member
 
Iscritto dal: Nov 2009
Messaggi: 13
Ho fugato ogni mio dubbio!! Grazie mille ancora!!!
Checco83 è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 13:50   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da bottomap Guarda i messaggi
Ah, ecco... mi ero perso qualcosa, ma in questo caso:
Codice:
if(!line.endsWith(";")){
   if(!line.endsWith(" ")){
      line+=" ";
   } 
   line+=";";
}
Se già finisce con ; non viene toccata
Se finisce con spazio viene aggiunto il solo ;
Se finisce in qualsiasi altro modo viene aggiunto spazio e ;
Il tuo algoritmo va bene solo se abbiamo la garanzia che le stringhe in input siano sempre terminate al massimo da un solo carattere di spazio.

Cioè questa:
Codice:
"select * from users  "
verrebbe così:
Codice:
"select * from users  ;"
e non va bene perchè l'utente voleva uno e un solo spazio prima del ";".
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2009, 14:01   #10
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Mmmm...

Mi pare che non fosse tra le ipotesi, altrimenti se finisce con ; ma contiene più spazi prima dello stesso andrebbe ripulita?

Ipotizziamo comunque una terza versione (supponendo di non avere problemi con gli spazi in testa, altrimenti basta rifarsi una trimRight):
Codice:
line=line.trim(); //si levano gli spazi in coda
if(!line.endsWith(";")){
   line+=" ;";
}
Se termina con ; vengono eventualmente eliminati gli spazi dopo il ;
Se termina con uno o più spazi vengono tolti tutti ed aggiunto " ;"
Se termina in altro modo viene aggiunto " ;"

Se si vuole ripulire anche gli eventuali spazi di troppo basterà aggiungere il ramo else, prendere la sottostringa fino al ;, trimmarla e procedere come sopra aggiungendo il " ;".

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Il PC che sostituisce il cloud: la grand...
La situazione di ULA per il razzo spazia...
Razzo spaziale cinese Lunga Marcia 3B &e...
ROCm.ai: AMD integra assistenti AI e nuo...
Phanteks XT M5, V5 e V5-LCD disponibili:...
Geely e Ford insieme per l'Europa: firma...
Geekbench 7 è disponibile e cambi...
Data center e cavi sottomarini: pronta u...
Usare la lingua come un mouse: MouthPad ...
IA agentica: la corsa all'implementazion...
No, George Russell non è bollito: ecco c...
HONOR cambia logo: il nuovo volto dell'a...
Cina: corsa ad accaparrarsi le CPU serve...
Giga in Europa e tariffe extra-UE, facci...
NVIDIA RTX Spark: quali saranno i primi ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v