Concatenare due stringhe
Come è noto, in Gambas, per concatenare due stringhe, si utilizza l'operatore &, posto fre le due stringhe.
Esempio:
'Public Sub Main() Dim s1, s2, unione As String s1 = "aaaa" s2 = "bbbb" unione = s1 & s2 Print unione End
Questa rappresenta la modalità più comune, usuale e la più semplice da utilizzare per unire due stringhe.
Esistono, però, anche altre modalità, che possono essere utilizzare, soprattutto in relazione ai casi ed alle situazioni in cui versa il codice
Eccone alcune.
Indice
- 1 Uso della funzione Mid( )
- 2 Uso della Funzione Subst( )
- 3 Uso della funzione Replace( )
- 4 Uso del Metodo .Join( ) fornito dalle variabili vettoriali del tipo string[ ]
- 5 Uso di una variabile vettoriale di tipo Byte[ ] e della funzione Asc( )
- 6 Uso di un Puntatore e dei Memory Stream
- 7 Analogo al precedente esempio, ma usando un file temporaneo
- 8 Note
Uso della funzione Mid( )
Questa modalità fa uso della funzione Mid( ). [Nota 1]
Vediamo un semplice esempio:
Public Sub Main() Dim s1 As String = "aaa" Dim s2 As String = "bbb" Dim unica As String unica = s2 Mid(unica, 1, 0) = s1 Print unica End
Uso della Funzione Subst( )
Questa modalità fa uso della funzione Subst( ). [Nota 2]
Vediamo un semplice esempio:
Public Sub Main() Dim s1 As String = "aaa" Dim s2 As String = "bbb" Dim unica As String unica = Subst(("&1&2"), s1, s2) Print unica End
Uso della funzione Replace( )
Questa modalità fa uso della funzione Replace( ). [Nota 2]
Vediamo un semplice esempio:
Public Sub Main() Dim s1 As String = "aaa" Dim s2 As String = "bbb" Dim unica As String unica = "*Y" unica = Replace(unica, "*", s1) unica = Replace(unica, "Y", s2) Print unica End
Uso del Metodo .Join( ) fornito dalle variabili vettoriali del tipo string[ ]
Vediamo di quest'altra modalità un semplice esempio:
Public Sub Main() Dim s1, s2, unica As String Dim ss As New String[] s1 = "aaa" s2 = "bbb" ss.Push(s1) ss.Push(s2) unica = ss.Join(Null, Null) Print unica End
Uso di una variabile vettoriale di tipo Byte[ ] e della funzione Asc( )
Vediamo di quest'altra modalità un semplice esempio:
Public Sub Main() Dim s1, s2, unica As String Dim bb As Byte[] Dim b As Byte s1 = "aaa" s2 = "bbb" bb = Byte[].FromString(s1) For b = 1 To Len(s2) bb.Push(Asc(s2, b)) Next unica = bb.ToString(0, bb.Count) Print unica End
Uso di un Puntatore e dei Memory Stream
Vediamo di quest'altra modalità un semplice esempio:
Public Sub Main() Dim s1, s2, unica As String Dim p As Pointer Dim st As Stream s1 = "aaa" s2 = "bbb" p = Alloc(SizeOf(gb.Byte), Len(s1) + Len(s2)) st = Memory p For Write Write #st, s1 Write #st, s2 st.Close unica = String@(p) Print unica Free(p) End
Analogo al precedente esempio, ma usando un file temporaneo
Vediamo quest'altro caso:
Public Sub Main() Dim s1, s2, t, unica As String Dim fl As File s1 = "aaa" s2 = "bbb" t = Temp() fl = Open t For Create Write #fl, s1 Write #fl, s2 fl.Close unica = File.Load(t) Print unica End
Note
[1] Questa modalità è stata proposta dai membri Top Fuel e Gianluigi del forum gambas-it.org .
[2] Questa modalità è stata proposta dal membro Gianluigi del forum gambas-it.org .