Autore Topic: Aggiunti i Metodi: String.PadLeft() e String.PadRight()  (Letto 231 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
« Risposta #1 il: 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/padright

 :ciao: :ciao:
« Ultima modifica: 01 Marzo 2020, 09:29:19 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
« Risposta #2 il: 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
« Ultima modifica: 01 Marzo 2020, 17:29:43 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Aggiunti i Metodi: String.PadLeft() e String.PadRight()
« Risposta #3 il: 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
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro