Differenze tra le versioni di "Modificare un carattere di una stringa"
Da Gambas-it.org - Wikipedia.
Riga 12: | Riga 12: | ||
Print s | Print s | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | ==Uso dei ''Memory Stream''== | ||
+ | Questa modalità è più complessa, e prevede l'azione in scrittura su un Puntatore ad una variabile di tipo ''Stringa'' mediante i ''Memory Stream'': | ||
+ | |||
+ | '''Public Sub Main() | ||
+ | |||
+ | Dim p As Pointer | ||
+ | Dim st As Stream | ||
+ | Dim s As String | ||
+ | |||
+ | <FONT Color=gray>' ''Assegnamo del testo alla variabile di tipo "String":''</font> | ||
+ | s = "aaazbbbzccczddd" | ||
+ | |||
+ | <FONT Color=gray>' ''Assegnamo l'indirizzo di memoria della variabile "s" ad una variabile di tipo Puntatore:''</font> | ||
+ | p = VarPtr(s) | ||
+ | |||
+ | <FONT Color=gray>' ''Generiamo dalla variabile "Puntatore" una variabile di tipo "Stream" in scrittura:''</font> | ||
+ | st = Memory p For Write | ||
+ | |||
+ | <FONT Color=gray>' ''Scriviamo ora il valore del codice ASCII corrispondente allo "spazio" nel byte di indice 7 dell'area di memoria puntata dal Puntatore:''</font> | ||
+ | Seek #st, 7 | ||
+ | Write #st, &20 As Byte | ||
+ | |||
+ | <FONT Color=gray>' ''Chiudiamo il flusso:''</font> | ||
+ | st.Close | ||
+ | |||
+ | <FONT Color=gray>' ''...vediamo nella variabile "s" la modifica apportata:''</font> | ||
+ | Print s | ||
'''End''' | '''End''' |
Versione delle 09:13, 9 gen 2017
Per modificare un carattere all'interno di una data stringa, è possibile adottare diverse modalità.
Uso della funzione Mid( )
La modalità più semplice è quella che prevede la funzione Mid( ), la quale è preposta ad individuare appunto uno o più caratteri in una stringa. [ Nota 1]
Mostriamo un semplice esempio, nel quale avendo questa unica stringa "aaazbbbzccczddd", si modificherà la seconda lettera "z" in uno spazio usando appunto la funzione Mid( ):
Public Sub Main() Dim s As String = "aaazbbbzccczddd" Mid$(s, 8, 1) = " " Print s End
Uso dei Memory Stream
Questa modalità è più complessa, e prevede l'azione in scrittura su un Puntatore ad una variabile di tipo Stringa mediante i Memory Stream:
Public Sub Main() Dim p As Pointer Dim st As Stream Dim s As String ' Assegnamo del testo alla variabile di tipo "String": s = "aaazbbbzccczddd" ' Assegnamo l'indirizzo di memoria della variabile "s" ad una variabile di tipo Puntatore: p = VarPtr(s) ' Generiamo dalla variabile "Puntatore" una variabile di tipo "Stream" in scrittura: st = Memory p For Write ' Scriviamo ora il valore del codice ASCII corrispondente allo "spazio" nel byte di indice 7 dell'area di memoria puntata dal Puntatore: Seek #st, 7 Write #st, &20 As Byte ' Chiudiamo il flusso: st.Close ' ...vediamo nella variabile "s" la modifica apportata: Print s End
Note
[1] Questa modalità è stata proposta dal membro Gianluigi del forum gambas-it.org .