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