Gambas-it

Gambas dal mondo esterno => Mailing List => Topic aperto da: vuott - 01 Marzo 2020, 00:10:14

Titolo: Aggiunti i Metodi: String.PadLeft() e String.PadRight()
Inserito da: vuott - 01 Marzo 2020, 00:10:14
https://gitlab.com/gambas/gambas/-/commit/a703c7f2ea09ef584b72eec445185849c77c3b7f
Titolo: Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
Inserito da: kicco - 01 Marzo 2020, 09:18:25
Speriamo nella documentazione!...  :)

PS: Ho visto che Minisini l'ha prodotta!
http://gambaswiki.org/wiki/comp/gb.util/string/padleft (http://gambaswiki.org/wiki/comp/gb.util/string/padleft)
http://gambaswiki.org/wiki/comp/gb.util/string/padright (http://gambaswiki.org/wiki/comp/gb.util/string/padright)

 :ciao: :ciao:
Titolo: Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
Inserito da: vuott - 01 Marzo 2020, 17:25:55
Finalmente Minisini ha provveduto.
Aspettavo da anni questa soluzione che era agevolmente possibile con il C:
   https://www.gambas-it.org/wiki/index.php?title=Printf_()#Formattazione_con_campo_riservato_di_caratteri

Ora infatti:
Codice: [Seleziona]
' int printf (const char *__restrict __format, ...)
' Write formatted output to stdout.
Private Extern printf(__format As String, num As Integer) As Integer In "libc:6"


Public Sub Main()

  Dim i As Integer
 
  For i = 0 To 7000 Step 500
    Print String.PadLeft(CStr(i), 10)
    printf("%10d\n", i)
    Print
  Next

End
Titolo: Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
Inserito da: Gianluigi - 03 Marzo 2020, 17:33:37
Se capisco bene, questa "imbottitura" della stringa opera una sorta di loop di riempimento con la stringa aggiunta.
Quindi la cosa è un tantino insidiosa se non calcoli bene lo spazio.

Ad esempio guarda questo codice:

Codice: [Seleziona]
Public Sub Main()

  Dim s As String = "Il risultato della moltiplicazione è " ' nota la lettera accentata.
  Dim e As Integer = String.Len(s) ' vista la lettera accentata occorre la funzione Len della classe String.
  Dim sResult As String = CStr(myResult(12.3, 7))
  Dim i As Integer = Len(sResult)

  Print String.PadRight(s, (e + i), sResult)
  Print String.PadRight(s, (e + i), Format(sResult, ",#.00"))
  Print String.PadRight(s, (e + i + 1), Format(sResult, ",#.00"))
  Print String.PadRight(s, (e + i + 2), Format(sResult, "€,#.00"))
  Print String.PadRight(s, (e + i + 2), Format(sResult, "$,#.00"))
  Print String.PadRight(s, (e + i + 3), Format(sResult, "$,#.00"))
  Print String.PadRight(s, (e + i + 1), sResult)
  Print String.PadRight(s, (e + i + 3), Format(sResult, ",#.00"))

End

Private Function myResult(a As Float, b As Float) As Float

  Return a * b

End