Buongiorno a tutti,
esiste una funziona tipo NumberFormat ma per le stringhe ?
Log(NumberFormat(12, 4 ,0)) '"0012"
Mi spiego meglio :
ho un elenco che devo stampare e vorrei formattare le varie ragioni sociale .. tutte con la stessa lunghezza.
Se la dimensiona massima della frase è = 30 ,
se la stringa è più lunga troncarla ,
se la stringa è più corta aggiungere spazi .
In extremis pensavo di tagliarlo con sf.Right puntato a 30
e aggiungere x spazi a destra ( x =30- len(frase))
Ciao marco
per ora mi viene in mente questa ma si può migliorare
B4X:
Sub PaddingString(dato As String, padval As String, ds As Boolean, lungo As Int) As String
Dim i As Int
Dim str As String
If dato = "" Or dato.Length >= lungo Then Return dato
str = dato
For i = 1 To lungo - dato.Length
If ds = False Then
str = padval & str
Else
str = str & padval
End If
Next
Return str
End Sub
ds se vuoi il padding a destra o sinistra
lungo quanto vuoi sia lunga la stringa
padval il valore che vuoi aggiungere per riempire la stringa
Sub FixString(Originale As String, Limit As Int) As String
If Originale.Trim="" Then
Return ""
Else
Dim Add As String = " "
Originale=Originale & Add & Add & Add & Add & Add & Add & Add & Add
Return Originale.SubString2(0,Limit)
End If
End Sub
oppure
B4X:
Sub FixString(Originale As String, Limit As Int) As String
If Originale.Trim="" Then
Return ""
Else
Originale=Originale & " "
Return Originale.SubString2(0,Limit)
End If
End Sub
Ciao grande Star-Dust ma a volte, a prescindere da quello che chiedeva Marco il padding è richiesto anche con degli spazi, specie nelle stampe allineate.
Ciao grande Star-Dust ma a volte, a prescindere da quello che chiedeva Marco il padding è richiesto anche con degli spazi, specie nelle stampe allineate.
Rispondevo solamente alle richieste specifiche di Marco, sicuramente in molti altri casi serve qualcosa di più complesso, ma a quel punto io farei cosi...
B4X:
Sub FixString(Originale As String, padval As String, Limit As Int, ds As Boolean) As String
If Originale.Trim="" Then
Return ""
Else
Dim Add As String = " ".Replace(" ",padval)
Add=Add & Add & Add & Add & Add & Add & Add & Add
If ds Then
Originale=Originale & Add
Return Originale.SubString2(0,Limit)
Else
Originale=Add & Originale
Return Originale.SubString(Originale.Length-Limit)
End If
End If
End Sub
oppure
B4X:
Sub FixString(Originale As String, padval As String, Limit As Int, ds As Boolean) As String
If Originale.Trim="" Then
Return ""
Else
If ds Then
Originale=Originale & " ".Replace(" ",padval)
Return Originale.SubString2(0,Limit)
Else
Originale=" ".Replace(" ",padval) & Originale
Return Originale.SubString(Originale.Length-Limit)
End If
End If
End Sub
Sub FixString(Originale As String, padval As String, Limit As Int, ds As Boolean) As String
Dim I As Int = 1
If ds Then i=0
If Originale.Trim="" Then
Return ""
Else
Originale=Originale.SubString(I*Originale.Length) & " ".Replace(" ",padval) & Originale.SubString((1-I)*Originale.Length)
Return Originale.SubString2((Originale.Length-Limit)*I,Limit+(Originale.Length-Limit)*I)
End If
End Sub