Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-12-2007, 16:32   #1
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
[JAVA] Formattazione delle stringhe

ragazzi, devo formattare una stringa in questo modo:
Codice:
X00-Y00\n
ovvero carattere, due cifre, trattino, carattere 2 cifre e poi il simbolo di "accapo", che se non ricordo male si fà \n

pensavo a creare una maschera, oppure a riempire un vettore....ma spero che ci sia qualcosa nelle librerie (che non trovo).....chi mi aiuta???
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 16:41   #2
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
ho trovato in giro per le api (ritrovate ) la classe Formatter....credo di non aver capito appieno come funziona, ma ora provo.....comunque se qualcuno ha suggerimenti
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 16:51   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Da Java 5 la classe String (e alcune altre classi di I/O) ha il metodo format() che fa uso internamente di un Formatter (che è la classe che fornisce appunto queste funzionalità di formattazione).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 16:54   #4
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da andbin Guarda i messaggi
Da Java 5 la classe String (e alcune altre classi di I/O) ha il metodo format() che fa uso internamente di un Formatter (che è la classe che fornisce appunto queste funzionalità di formattazione).
infatti, l'ho letto ma non ho ben capito come funziona......cioè, sto provando a farlo funzionare ma non mi và
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:06   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da franksisca Guarda i messaggi
infatti, l'ho letto ma non ho ben capito come funziona
Te lo scrivo io ma dovrei capire meglio che dati (e tipi) devi mettere. Cioè con cosa parti.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:11   #6
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
allora, la mia situazione è questa:

io devo inviare una stringa così comp'osta(non mi interessa il tipo di dati che la compongono)

Carattere numero numero - carattere numero numero \n

ovvero qualcosa del tipo A12-V75\n (dovrò fare dei controlli sui caratteri, ma non ci riguarda al momento )

ecco, il mio problema è questo:

se io mando A8-B25\n
oppure B3.c27\n voglio che me li corregga in automatico.....speravo che il format delle string mi potesse aiutare, ma mentre lo uso mi assale il dubbio che ciò non sia possibile, spero che tu possa contraddirmi
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:19   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da franksisca Guarda i messaggi
io devo inviare una stringa così comp'osta(non mi interessa il tipo di dati che la compongono)

Carattere numero numero - carattere numero numero \n
Ok, ma quello che vorrei capire io è se ad esempio tu parti con l'avere 1 char, 1 int, 1 char, 1 int semplicemente da formattare. In tal caso puoi fare:

String s = String.format ("%c%02d-%c%02d\n", ch1, num1, ch2, num2);

Quote:
Originariamente inviato da franksisca Guarda i messaggi
se io mando A8-B25\n
oppure B3.c27\n voglio che me li corregga in automatico
Correggerli in che modo?? Ad esempio mettendo uno 0 in modo che A8 diventi A08??

Scusa se sono un po' vago ma in genere devo prima capirle le cose ....
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:23   #8
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da andbin Guarda i messaggi
Ok, ma quello che vorrei capire io è se ad esempio tu parti con l'avere 1 char, 1 int, 1 char, 1 int semplicemente da formattare. In tal caso puoi fare:

String s = String.format ("%c%02d-%c%02d\n", ch1, num1, ch2, num2);

Correggerli in che modo?? Ad esempio mettendo uno 0 in modo che A8 diventi A08??

Scusa se sono un po' vago ma in genere devo prima capirle le cose ....
no, figurati, anzi grazie per la disponibilità, ancora una volta sei gentilissimo.

si intendevo correggerli in quel modo.......purtroppo la stringa la prendo per intero, quindi

String s = String.format ("%c%02d-%c%02d\n", ch1, num1, ch2, num2);
non posso usarlo
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:36   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da franksisca Guarda i messaggi
si intendevo correggerli in quel modo.......purtroppo la stringa la prendo per intero
Quindi, se ho capito bene, non devi formattare una stringa (comporla) ma verificare se corrisponde ad un determinato "pattern" e magari estrarre i dati e correggerli.

Se è così, allora puoi usare le espressioni regolari, ma bisognerebbe vedere meglio cosa vuoi che sia accettabile o meno. Mi spiego meglio: se ti arriva 789-B25\n, devi correggerlo? (e come?) E se ti arriva A9;C5\n?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:37   #10
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
rettifica, l'ho provato e funziona......o meglio, fa quello che dico io solo se gli passo i 4 vaolri, quindi, a questo punto, mi conviene creare un parser ad hoc e il gioco è fatto

p.s.: mi spieghi una cosa, please..

tratto dalle api
%[argument_index$][flags][width][.precision]conversion
mentre tu usi solo %c....allora perchè il primo%c riconosce ch1 e così via gli altri ???
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:39   #11
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da andbin Guarda i messaggi
Quindi, se ho capito bene, non devi formattare una stringa (comporla) ma verificare se corrisponde ad un determinato "pattern" e magari estrarre i dati e correggerli.
ESATTO!!!!!!

visto, la mia dialetttica migliora ogni giorno di più lol

ehehe....quasi quasi mi butto sulle espressioni regolari....anche se credo che non sia necessario.......mi rispondi alla domanda di prima please
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:53   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da franksisca Guarda i messaggi
tratto dalle api
%[argument_index$][flags][width][.precision]conversion
mentre tu usi solo %c....allora perchè il primo%c riconosce ch1 e così via gli altri ???
Le parti tra [ ] indicate nella sintassi sono opzionali, è invece importante che uno specificatore di formato inizi con % e termini con un carattere che indica il tipo di conversione. Quindi %c indica un carattere (ch1), %02d indica un intero (2 digit con zeri davanti) ecc....

Quote:
Originariamente inviato da franksisca Guarda i messaggi
quasi quasi mi butto sulle espressioni regolari....anche se credo che non sia necessario.......
No, in effetti non è strettamente necessario usare le espressioni regolari. Basterebbe estrarre i singoli caratteri e verificare se sono ciò che ti aspetti.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:58   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Sempre dai javadocs...

Quote:
Originariamente inviato da franksisca Guarda i messaggi
rettifica, l'ho provato e funziona......o meglio, fa quello che dico io solo se gli passo i 4 vaolri, quindi, a questo punto, mi conviene creare un parser ad hoc e il gioco è fatto

p.s.: mi spieghi una cosa, please..

tratto dalle api
%[argument_index$][flags][width][.precision]conversion
mentre tu usi solo %c....allora perchè il primo%c riconosce ch1 e così via gli altri ???
Perchè secondo la documentazione ci sono 3 modi per indicizzare gli argomenti passati:

Quote:
Argument Index

Format specifiers can reference arguments in three ways:

* Explicit indexing is used when the format specifier contains an argument index. The argument index is a decimal integer indicating the position of the argument in the argument list. The first argument is referenced by "1$", the second by "2$", etc. An argument may be referenced more than once.

For example:

formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
"a", "b", "c", "d")
// -> "d c b a d c b a"


* Relative indexing is used when the format specifier contains a '<' ('\u003c') flag which causes the argument for the previous format specifier to be re-used. If there is no previous argument, then a MissingFormatArgumentException is thrown.

formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced


* Ordinary indexing is used when the format specifier contains neither an argument index nor a '<' flag. Each format specifier which uses ordinary indexing is assigned a sequential implicit index into argument list which is independent of the indices used by explicit or relative indexing.

formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"



It is possible to have a format string which uses all forms of indexing, for example:

formatter.format("%2$s %s %<s %s", "a", "b", "c", "d")
// -> "b a a b"
// "c" and "d" are ignored because they are not referenced


The maximum number of arguments is limited by the maximum dimension of a Java array as defined by the Java Virtual Machine Specification. If the argument index is does not correspond to an available argument, then a MissingFormatArgumentException is thrown.
Ciao

EDIT:
Ops, sorry, nn ho visto il post di Andbin e il mio si è "accavallato" al suo :P

Ultima modifica di banryu79 : 12-12-2007 alle 17:59. Motivo: ops...
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 20:52   #14
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
grazie ragazzi, gentilissimi come come sempre....se ho problemi vi faccio sapere
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2007, 11:44   #15
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da andbin Guarda i messaggi
Quindi %c indica un carattere (ch1), %02d indica un intero (2 digit con zeri davanti) ecc....
l'ecc non riesco a trovare....ovvero, come faccio a riconoscere il tipo???

c=char
d= digit(int o anche il resto dei "numeri"??)

poi ne esistono altri???
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2007, 11:59   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da franksisca Guarda i messaggi
poi ne esistono altri???
Sono tutti spiegati molto ben in dettaglio nella documentazione della classe java.util.Formatter.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2007, 12:01   #17
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da andbin Guarda i messaggi
Sono tutti spiegati molto ben in dettaglio nella documentazione della classe java.util.Formatter.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2007, 12:04   #18
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
eccoli.....
Codice:
'b', 'B'  	 general 	 If the argument arg is null, then the result is "false". If arg is a boolean or Boolean, then the result is the string returned by String.valueOf(). Otherwise, the result is "true".
'h', 'H' 	general 	If the argument arg is null, then the result is "null". Otherwise, the result is obtained by invoking Integer.toHexString(arg.hashCode()).
's', 'S' 	general 	If the argument arg is null, then the result is "null". If arg implements Formattable, then arg.formatTo is invoked. Otherwise, the result is obtained by invoking arg.toString().
'c', 'C' 	character 	The result is a Unicode character
'd' 	integral 	The result is formatted as a decimal integer
'o' 	integral 	The result is formatted as an octal integer
'x', 'X' 	integral 	The result is formatted as a hexadecimal integer
'e', 'E' 	floating point 	The result is formatted as a decimal number in computerized scientific notation
'f' 	floating point 	The result is formatted as a decimal number
'g', 'G' 	floating point 	The result is formatted using computerized scientific notation or decimal format, depending on the precision and the value after rounding.
'a', 'A' 	floating point 	The result is formatted as a hexadecimal floating-point number with a significand and an exponent
't', 'T' 	date/time 	Prefix for date and time conversion characters. See Date/Time Conversions.
'%' 	percent 	The result is a literal '%' ('\u0025')
'n' 	line separator 	The result is the platform-specific line separator
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2007, 12:40   #19
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Cmq ringrazio Andbin perchè anche io, come Franksisca, stavo cercando un sistema per formattare delle coordinate (memorizzate come double risultati di calcoli trigonometrici) per stamparle come testo in un file di istruzioni da inviare a un CN...

Le ho provate di tutte prima di leggere questo thread e scoprire String.format() e la classe Formatter

Thanks
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Addio console: Just Dance Now trasforma ...
Driver Radeon Adrenalin 25.10: perch&egr...
Oltre le GPU: NVIDIA annuncia NVQLink, ...
Samsung lancia il Team Galaxy Italia per...
Magic Leap: indistinguibili dai normali ...
Aruba Cloud: trasparenza sui costi e str...
Quando il cloud si blocca e resti al fre...
Integrare per competere, la sfida digita...
Leggenda del rally e modernità: S...
La Python Software Foundation rinuncia a...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
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:50.


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