Non credo ci sia un modo "integrato" altrettanto semplce; ci sono probabilmente molti esempi, librerie, snippet... credo qualcosa anche pubblicato da me, millenni fa.
Potresti fare in due modi:
il più breve (codice) dipende se sia possibile, se conosci già il carattere (puoi scriverlo direttamente nel codice) ed il numero massimo di caratteri
usare StringBuilder
1
B4X:
Dim MyString as string
MyString = "------------------------------" ' Sono 30, max
Dim NewString As Strint
NewString = MySing.SubString2(0, 10) ' Se ne vuoi 10
2
B4X:
Public Sub RepeatChar(Ch As String, HowMany As Int) As String
Dim SB As StringBuilder
SB.Initialize
For i = 0 To HowMany - 1
SB.Append(Ch)
Next
Return SB.ToString
End Sub
Non credo ci sia un modo "integrato" altrettanto semplce; ci sono probabilmente molti esempi, librerie, snippet... credo qualcosa anche pubblicato da me, millenni fa.
UPDATE: V. 2.00 (please, read this post). B4XLib that provides 12 VB6/VBA string functions. Being a B4XLib, you can use it in B4A, B4J, B4i and is possible to read/modify the source code. I have decided to develop only those for which there are no analogues or identical in B4X. Remember...
UPDATE: V. 2.00 (please, read this post). B4XLib that provides 12 VB6/VBA string functions. Being a B4XLib, you can use it in B4A, B4J, B4i and is possible to read/modify the source code. I have decided to develop only those for which there are no analogues or identical in B4X. Remember...
A parte il fatto che, per la mia memoria, 3 anni reali equivalgono circa a 5.000 anni "percepiti" (come la boiata sulle temperature) ?
mi pare che in quella libreria non ci sia una funzione per la domanda in questione. Mi pare, eh!
A parte il fatto che, per la mia memoria, 3 anni reali equivalgono circa a 5.000 anni "percepiti" (come la boiata sulle temperature) ?
mi pare che in quella libreria non ci sia una funzione per la domanda in questione. Mi pare, eh!
A parte il fatto che, per la mia memoria, 3 anni reali equivalgono circa a 5.000 anni "percepiti" (come la boiata sulle temperature) ?
mi pare che in quella libreria non ci sia una funzione per la domanda in questione. Mi pare, eh!
Ancora oggi al bisogno utilizzo una mia vecchia libreria (db2000 eXtrafuncions) dove sono riportate diverse classi i cui metodi sono VB like e dove è presente anche la funzione String.
Dim MyString As String = vbString(20,"-")
Sub vbString(quantity As Int, str As String) As String
Dim s As String = ""
For i = 0 To quantity - 1
s = s & str
Next
Return s
End Sub
Dim MyString As String = vbString(20,"-")
Sub vbString(quantity As Int, str As String) As String
Dim s As String = ""
For i = 0 To quantity - 1
s = s & str
Next
Return s
End Sub
Dim MyString As String = vbString(20,"-")
Sub vbString(quantity As Int, str As String) As String
Dim s As String = ""
For i = 0 To quantity - 1
s = s & str
Next
Return s
End Sub
parliamo di lana caprina, ma l'utilizzo di String invece di StringBuilder è meno efficiente, perchè ogni stringa è immutabile, quindi ad ogni s = s & ... viene creata una nuova stringa e distrutta quella precedente
parliamo di lana caprina, ma l'utilizzo di String invece di StringBuilder è meno efficiente, perchè ogni stringa è immutabile, quindi ad ogni s = s & ... viene creata una nuova stringa e distrutta quella precedente
Ed il codice è talmente simile...!
Cmq il motivo per cui non ho usato una var stringa ma stringbuilder è proprio quello indicato da Alessandro (certo che se non devi costruire stringhe con milioni di caratteri, i tempi saranno praticamente identici).
All'epoca, BEN 3 anni fa ?, cercai funzioni VBA (in Excel) e VB6; trovai quelle. String$(...) non la ricordo né so se fosse in VB6 o successivamente in VB Net.
Comunque, aggiungerla non costa una gran fatica, ergo farollo ?
Chiesto al sig. ChatGPT, secondo il quale esiste in VBA e VB6 (oltre a QuickBasic ed altri basic, probabilmente).
Motivo in più per aggiungerla a quella libreria.
Sub MultiplyString(S As String, N As Int) As String
If N > 1 Then
Dim Temp As String = MultiplyString(S, Bit.ShiftRight(N, 1)) 'ShiftRight 1 is same as integer divide by 2
If Bit.And(N, 1) <> 0 Then 'And 1 is same as Mod 2
Return Temp & Temp & S
Else
Return Temp & Temp
End If
Else If N = 1 Then
Return S
End If
Return "" 'works without, but nice to have
End Sub
Test:
Log(MultiplyString("B4X! ", 17))
Log output:
Waiting for debugger to connect...
Program started.
B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X! B4X!
Program terminated (StartMessageLoop was not called).