Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
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


Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Una smartband senza display per monitora...
Offerte Ninja: friggitrici ad aria da 69...
Disney+ aumenta ancora i prezzi, per il ...
Xiaomi 18 Pro e Pro Max, la grande novit...
C'è un motivo se OpenAI non chiede un eu...
11 novità rilevanti nella nostra ...
Il tempo non è mai stato misurato...
Le auto elettriche sono più longe...
Stardock Snipboard: il dock che vuole ma...
Logitech G PRO X SUPERLIGHT 2 e SE, mous...
Supporto Linux in arrivo anche per i not...
Ninja MAX, la friggitrice ad aria da 6,2...
Poche scorte rimaste: Mini PC con Ryzen ...
Adobe Premiere è disponibile anche su An...
Sorpresa su Amazon: ora sono 2 le e-bike...
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: 10:09.


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