Newsgroup: it.comp.lang.javascript
Titolo: toLocaleString() e spazio come separatore di migliaia

A volte, quando si cerca di fare le cose per bene, invece di farle in
maniera becera e insulsa, si rischia di incappare in stranezze
imprevedibili e si finisce pure derisi dal collega "Te l'avevo detto
io di non fare cose strane!"
Problema: c'e' da formattare un numero.
Io uso il metodo toLocaleString() e costruisco la mia stringa, e
funziona tutto, finche'...
...finche' non incappo in un sistema in cui il separatore delle
migliaia e' uno spazio invece che il punto, o la virgola.
E in una delle tabelle, in corrispondenza dello spazio, MI VA A
CAPO!!!!
Dovrei poter intercettare tutti gli spazi presenti nei formati utente
e sostituirli con dei &nbsp;
Perche' se per i numeri e' piuttosto insolito usare gli spazi come
separatori delle migliaia, non cosi' nelle date lunghe, dove gli spazi
ci sono.
Qualche soluzione elegante?

 Qualche soluzione elegante?
Provato a racchiudere in un tag e a settare white-space:nowrap ?
 
http://www.w3.org/TR/CSS21/text.html#white-space-prop

Cristiano Larghi ha scritto:

Perche' hai taggato il thread con OT?
Interessante quella impostazione del css: non la conoscevo.
Tuttavia non e' tanto diverso dalla pezza che ho messo nel codice con un 
.replace(" ", "&nbsp;");
Il punto e' che non tutti gli spazi che ci possono essere in un formato 
definito dall'utente devono essere considerati non interrompibili.
Voglio dire: sarebbe bello se fosse possibile nelle impostazioni del 
pannello di controllo inserire spazio quando si vuole lo spazio o &nbsp; 
o ctrl+spazio quando si vuole uno spazio non interrompibile.
Di fatto questa cosa non e' possibile, ma poi al lato pratico diventa di 
difficile gestione.
Perche' io posso, anzi devo poter andare a capo in una cella se il campo 
data e' del tipo data lunga "mercoledi 16 settembre 2009" mentre nel 
caso in cui mi si e' evidenziato il problema, se il campo contiene "EUR 
150 000.00" non devo assolutamente spezzare la riga dopo il 150 ma 
magari dopo EUR posso accettarlo.
Non vedo via di uscita, e la cosa ridicola e' che quelli qui da me che 
hanno brutalmente cablato nel codice il formato di output (che manco 
sanno che esiste il metodo toLocaleString() ) non hanno il problema e 
neanche se lo pongono.

 magari dopo EUR posso accettarlo.
Racchiudi la cifra in uno span e piazzargli il nostro bel white-space

 non scomodare javascript laddove non serve.
L'eleganza e' un concetto piuttosto relativo e assai soggettivo a
quanto parte.
La mia esigenza primaria (l'esigenza di tutti suppongo) e' quella di
non mischiare troppi ingredienti nel minestrone.
Per esigenze di manutenzione (che non e' detto che sia sempre a mio
carico), e' preferibile avere un unico interlocutore primario: il
javascript, piuttosto che il css, piuttosto che il php.
Mischiare troppo le cose tende a trasformare l'applicazione in un caos
ingestibile dopo poche variazioni, e soprattutto allunga i tempi per
andare a capire dove mettere le mani.
Prendo atto dei tuoi consigli, e sicuramente prendero' qualche spunto,
ma preferisco agire di javascript, almeno la modifica e' localizzata
in un unico punto (la funzione di formattazione degli importi) e usata
ovunque, piuttosto che mettere mano a dozzine di tabelle o toccare il
foglio di stile, che poi magari salta fuori qualcosa che non c'entra
niente e ci mettono poco ad incolpare la mia modifica.
Niente. Ho solo portato all'attenzione di chi legge, una problematica
latente, legata allo spazio nella stringa di formattazione di numeri e
date, e al metodo toLocaleString.

 javascript, piuttosto che il css, piuttosto che il php.
Qualcuno dice "the right tool for the right job", e io sottoscrivo. 
Esiste html e css, che IMHO *devono* essere le basi. javascript (per i 
browser che lo hanno abilitato) serve a ciò che html e css non fanno. 
Scomodare quindi javascript quando puoi farlo con css a me pare un 
concetto errato. IMHO.
Senza contare che, andando a fondo a quanto dici, dovresti inviare al 
browser una pagina vuota e costruire tutto via javascript ... è questo 
che fai?

 che fai?
No, la pagina base e' un html che contiene delle tabelle vuote.
Col javascript prendo dei dati che arrivano da degli XML e vado a
popolare le celle.
Qualcuno si occupa di definire i layout HTML vuoti (non io) e anche il
look di questi usando i fogli di stile.
Io vado solo a riempirli usando del javascript.
Se provo ad andare a chiedere di aggiungere alle tabelle e ai fogli di
stile roba che non capiscono ritorniamo al motivo scatenante di questo
topic: mi vengono a rinfacciare a me di aver voluto usare la
toLocaleString() invece di forzare la formattazione dei dati.

 toLocaleString() invece di forzare la formattazione dei dati.
e te piazzagli con javascript un bel <span style="white-
space:nowrap">valore</span> dove ti serve ...