Newsgroup: it.comp.www.asp
Titolo: Sicuramente migliorabile (era "Valuta" ):

Lo script che segue mette i punti in una stringa e ritorna una stringa...
ma se per esempio la stringa e' 50320199 e volete farla apparire come una
valuta sul vostro bel foglio HTML eccovi serviti: il risultato produce
50.320.199
La presente funzione non accetta importi decimali (1260,3 diventa 126.0,3 e'
una beta e a me va bene cosi') pero' puo' mostrare qualsiasi tipo di
divisore desideriate e qualsiasi cosa come simbolo di valuta (anche una
immagine, perche' no?)
Chi ha un'idea migliore si faccia avanti, non sia timido ^___^
<%
option explicit
dim valore
dim liraFormattata
function formatMoneta(valore)
'dichiarazione delle variabili
dim lunghezza
dim unPuntoOgni
dim parteSinistraDellaCifra
dim conta
dim addpoint
dim rightSide
dim leftSide
dim calcolaR
dim caloclaL
dim valuta
'inizializzazione delle variabili difunzione (modificabili a piacere)
unPuntoOgni = 3
valuta="ITL"
cheCiMettoInMezzo="."
'inizializazzione delle variabili di servizio (non toccare)
addPoint=0
lunghezza = len(valore)
liraformattata=valore
calcolaR=0
calcolaL=0
'ed ecco l'incasinatissimo ciclo
for conta=0 to lunghezza step unPuntoOgni
'mi piglio le due parti della cifra
calcolaR=conta+addPoint+unPuntoOgni
rightSide = right(liraFormattata,calcolaR)
CalcolaL=lunghezza-unPuntoOgni-conta
leftSide = left(liraFormattata,calcolaL)
'e a meno che non sia capitato male ci metto qualcosa in mezzo
 if len(rightSide)>2 then
    'e rimetto insieme il tutto se possibile
  liraFormattata = leftSide&"."&rightSide
 else
    'non accadra' mai, ma tanto per essere sicuri...
  liraFormattata = liraformattata
 end if
addPoint=addPoint+1
'questa riga interrompe il ciclo prima che sia messo un punto davanti al
numero!
if (calcolaL-unPuntoOgni)<1 then conta=lunghezza+100
next
response.write "<small>"&valuta&":</small>&nbsp;"&liraFormattata
end function
%>




 [cut]
ho tolto tutto perche' come al solito il robot di bochicchio fa le bizze
RIPOSTO
ah Nettuno! Nettuno!
response.write("<small>"&stredit("1234567,890",3,".",",")&":</small>&nbsp;"&liraFormattata
Dovrebbe restituire 1.234.567,890
response.write("<small>"&stredit("1234567",1,"$",",")&":</small>&nbsp;"&TestoFormattato
Dovrebbe restituire 1&2&3&4&5&6&7
Function strEdit(inTxt, gapReq, intDelim, decDelim)
        ' inTxt = stringa da formattare
        'gapReq = intervallo richiesto di formattazione
        'intDelim= carattere di formattazione (mi pare che puo' essere
anche
piu' di 1)
        'decDelim = carattere di separazione dei decimali da cercare
(questo
pure me sa che puo' essere piu' di uno)
        ' by me
Dim strDec
Dim iPtr
Dim strResult
Dim iCnt
strResult = ""
inTxt = Trim(inTxt)
iPtr = InStr(inTxt, decDelim)           
If iPtr > 0 Then                    ' vede se c'e' il delimitatore dei
decimali (non so se VBS prende i parametri optional)
    strDec = Mid(inTxt, iPtr)       'leva i decimali
Else
    iPtr = Len(inTxt)               'imposta lunghezza da trattare
    strDec = ""
End If
For iCnt = iPtr To gapReq + 2 Step -gapReq            'luppa
    strResult = intDelim & Mid(inTxt, iCnt - gapReq, gapReq) &
strResult   
Next
strEdit = Mid(inTxt, 1, iCnt - 1) & strResult & strDec           
'aggiunge ultimo pezzo di sx e riaggiunge i decimali
End Function
-- 
comunque si dovrebbe poter fare anche con RegExp  
essi' che sono un timido!
-- 
Alessandro Cara