ok, accetto la sfida![]()
![]()
mo' ce provo
ok, accetto la sfida![]()
![]()
mo' ce provo
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
andiamo per gradi:
ora la funzione è parametrica (il secondo argomento della funzione è il numero di decimali):
ora mi domando come posso fare due replace in una sola istruzione. Cmq ottimizzare questa funzione ancora di più mi riesce difficile... anche facendo come hai detto tu al massimo risparmio 2 righe.codice:<html> <head> <script> function format(number, dec) { while (number.length < dec + 1) number = "0" + number; var re_decimal = new RegExp ("(\\d*?)(\\d{" + dec +"})$"); var re_fixed = new RegExp ("(\\d*?)(\\d{3})$"); formatted = number.replace(re_decimal, ",$2"); number = number.replace(re_decimal, "$1"); while (number.length > 3) { formatted = number.replace(re_fixed, ".$2") + formatted; number = number.replace(re_fixed, "$1"); } formatted = number + formatted; return formatted; } </script> </head> <body> <script> document.write(format("12345678",3)); </script> </body> </html>
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
la seconda funzionalità si può fare nel seguente modo (forse quello che intendeva mich_) :
1) Ci sono istruzioni in più, di cui 1 dentro il while
2) L'uso delle espressioni regolare si dimezza (circa)
Dopodichè mi fermo qui...
codice:<html> <head> <script> function format(number, dec) { while (number.length < dec + 1) number = "0" + number; var formatted = ""; var decimal = new RegExp ("(\\d*?)(\\d{" + dec +"})$"); var fixed = new RegExp ("(\\d*?)(\\d{3})$"); split = decimal.exec(number); if (split[2].length > 0) { formatted = "," + split[2]; } number = split[1]; while (number.length > 3) { split = fixed.exec(number); formatted = "." + split[2] + formatted; number = split[1]; } formatted = number + formatted; return formatted; } </script> </head> <body> <script> document.write(format("123456789", 4)); document.write(" "); document.write(format("123456789", 0)); </script> </body> </html>
Altre possibili (e più veloci) soluzioni??
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Il risparmio non e` tanto nelle righe, ma nel lavoro: la RegExp ha necessita` di un interprete a parte.
Quindi:
var estr = number.match(re_fixed);
formatted = estr[1] + formatted;
number = estr[0];
Nota: non lo ho provato.
EDIT: ho postato prima di vedere la tua soluzione ultima. Potrebbe funzionare anche la tua, ma la mia la preferisco (e` piu` esplicito il riferimento alla RegExp).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
prova l'ultimo esempio che ho postato...
attenzione però che nel tuo esempio, l'array con indice 0 rappresenta __tutta__ la stringa... con JS si parte da 1
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Ciao a tutti se volessi usare la funzione di formattazione durante la digitazione !!!![]()
Mi spiego meglio o provato a chimare la funzione sotto ogni volta che un utente preme un tasto per formattare ad ogni digitazione il contenuto del campo... MA SCOPPIA TUTTO !!! :master:
<script>
function format(number) {
number = String(number);
while (number.length < 3) {
number = "0" + number;
}
formatted = number.replace(/\d*?(\d{2})$/, ",$1");
number = number.replace(/(\d*?)\d{2}$/, "$1");
while (number.length > 3) {
formatted = number.replace(/\d*?(\d{3})$/, ".$1") + formatted;
number = number.replace(/(\d*?)\d{3}$/, "$1");
}
formatted = number + formatted;
return formatted;
}
</script>
GRAZIE A TUTTI
Benvenuto nel forum![]()
C'e' una discussione sull'argomento "script migliaia" poche righe sotto e piu' recente.
Ti invito anche a prendere visione del regolamento.
ciao
Il guaio per i poveri computers e' che sono gli uomini a comandarli.
Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
Consultate la discussione in rilievo: script / discussioni utili
Usate la funzione di Ricerca del Forum
a me servirebbe una funzione che faccia il contrario, ossia da 13.560.894,15 a 13560894.15 giusto per riportare l'esempioOriginariamente inviato da
Come si può formattare una cifra da:
1356089415 in 13.560.894,15
risultato = string.replace(/\./g,"").replace(/\,/,"\.")
ciao
Il guaio per i poveri computers e' che sono gli uomini a comandarli.
Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
Consultate la discussione in rilievo: script / discussioni utili
Usate la funzione di Ricerca del Forum