Differenze tra le versioni di "Individuare in una stringa i caratteri ricorrenti e loro posizioni"
Da Gambas-it.org - Wikipedia.
(Nessuna differenza)
|
Versione attuale delle 18:32, 28 giu 2024
Per poter individuare in una stringa i caratteri ricorrenti e loro rispettive posizioni, possiamo adottare varie modalità.
Ne mostriamo alcune, nelle quali si intende individuare il carattere "a " in una stringa di testo, e, per ciascun carattere "a " individuato, la sua posizione.
1a modalità
Public Sub Main() Dim s As String = "abcdabcdabcd abcd abcd" Dim i As Integer For i = 1 To String.Len(s) If Mid(s, i, 1) = "a" Then Print i, "a" Next End
2a modalità
Public Sub Main() Dim s As String = "abcdabcdabcd abcd abcd" Dim bb As Byte[] Dim i As Integer bb = Byte[].FromString(s) For i = 0 To bb.Max If bb[i] = 97 Then Print i + 1, "a" ' oppure: If bb[i] = 97 Then Print i + 1, bb.ToString(i, 1) ' oppure: If bb.ToString(i,1) = "a" Then Print i + 1, bb.ToString(i, 1) Next End
3a modalità
Public Sub Main() Dim s As String = "abcdabcdabcd abcd abcd" Dim bb As Byte[] Dim i As Integer bb = Byte[].FromString(s) Do If Byte@(bb.Data + i) = 97 Then Print i + 1, "a" ' oppure: If bb[i] = 97 Then Print i + 1, bb.ToString(i, 1) ' oppure: If bb.ToString(i,1) = "a" Then Print i + 1, bb.ToString(i, 1) Inc i Loop Until Byte@(bb.Data + i) = 0 End
4a modalità
Una leggera variante della precedente modalità:
Public Sub Main() Dim s As String = "abcdabcdabcd abcd abcd" Dim p As Pointer Dim i As Integer p = Alloc(s) Do If Byte@(p + i) = 97 Then Print i + 1, "a" Inc i Loop Until Byte@(p + i) = 0 Free(p) End
5a modalità
Una variante della precedente modalità, usando una variabile di tipo Stringa e la funzione "InStr()":
Public Sub Main() Dim s As String = "abcdabcdabcd abcd abcd" Dim i, r As Integer i = 1 Do i = InStr(s, "b", i) If i > 0 Then Print i, Inc i Inc r Endif Loop Until i = 0 Print "\n\n"; r End