Concatenare due stringhe

Da Gambas-it.org - Wikipedia.

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.

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 .