Ecco il nuovo compitino:
Posto questo codice sulla concatenazione di due o più stringhe:
Public Sub Main()
Dim s1, s2 As String
s1 = "aaa"
s2 = "bbb"
' 1^ modalità:
Print s1 & s2
End
mostrate ogni altra possibile modalità per concatenare le stringhe contenute nelle due variabili s1 e s2 riportate nell'esempio.
A me vengono in mente solo queste:
' Gambas module file
Public Sub Main()
Dim s1, s2 As String
s1 = "aaa"
s2 = "bbb"
' 1^ modalità:
Print s1 & s2
'============
Print s1; s2
'Print s1, s2 'questa penso non valga
Print Subst(("&1&2"), s1, s2)
End
Ma immagino ce ne saranno parecchie...
:ciao:
'Print s1, s2 'questa penso non valga
No, perché non produci una concatenazione formale delle due stringhe in una sola: hai solo un effetto visivo somigliante nella Console.
Precisiamo dunque che si deve ottenere un'unica stringa da porre in una variabile.
Insomma come fosse:
Dim s1, s2, unica As String
unica = s1 & s2
'Print s1, s2 'questa penso non valga
...in fondo, sì, il risultato è coerente con quanto richiesto; però questo lo è solo nel caso in cui si deve scrivere con Print nella Console.
Precisiamo dunque che si deve ottenere un'unica stringa da porre in una variabile.
Insomma come fosse:
Dim s1, s2, unica As String
unica = s1 & s2
Allora io sono rimasto ad una sola concatenazione
unica = Subst(("&1&2"), s1, s2)
Altri modi?
:ciao:
Questo non so se è valido:
Public Sub Main()
Dim s1 As String = "aaa"
Dim s2 As String = "bbb"
Dim unica As String[] = [s1, s2]
Print unica[0]; unica[1]
End
:ciao:
Questa me l'aveva spiegata Top Fuel ma visto che se la deve essere dimenticata :P la posto io:
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
Se vogliamo un altro esempio (inutile e complicato):
Dim s1, s2 As String
Dim unica As String = ""
Dim i As Integer
s1 = "aaa"
s2 = "bbb"
For i = 1 To Len(s1)
unica &= Mid(s1, i, 1)
Next
For i = 1 To Len(s2)
unica &= Mid(s2, i, 1)
Next
Print unica
ripeto: inutile e complicato :D
ora chissà che voto ti rifila! ;D
Certamente superiore a quello di chi ha letteralmente sprecato le variabili vettoriali di tipo String[ ]:
Dim unica As String[] = [s1, s2]
in questo modo: :violent:
avendo invece un'altra interessante modalità per le mani !
A me che sono il genio l'unico (più o meno) che può usare
Mid$(unica, 1, 0) = s1
'or'
unica = Subst(("&1&2"), s1, s2)
Qui sotto potete ammirare io che bacia se stesso
:-*
:P :P :P
One more
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
:ciao:
Oggi do il mio contributo.
1) Uso del Metodo .Join( ) fornito dalle variabili vettoriali del tipo string[ ]:
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
2) Uso di una variabile vettoriale di tipo Byte[ ] e della funzione Asc( ):
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
3) Uso di un Puntatore e dei Memory Stream:
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
4) Analogo al precedente punto 3), ma usando un file temporaneo:
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