Differenze tra le versioni di "Individuare in una stringa i caratteri ricorrenti e loro posizioni"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 1: | Riga 1: | ||
Per poter individuare in una stringa i caratteri ricorrenti e loro rispettive posizioni, possiamo adottare varie modalità. | 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. | + | 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. |
====1<SUP>a</sup> modalità==== | ====1<SUP>a</sup> modalità==== | ||
Riga 74: | Riga 74: | ||
====5<SUP>a</sup> modalità==== | ====5<SUP>a</sup> modalità==== | ||
− | Una variante della precedente modalità, usando una variabile di tipo Stringa e la funzione | + | Una variante della precedente modalità, usando una variabile di tipo Stringa e la funzione "InStr()": |
Public Sub Main() | Public Sub Main() | ||
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