Confrontare i caratteri di due stringhe

Da Gambas-it.org - Wikipedia.
Versione del 23 giu 2023 alle 15:43 di Vuott (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Il caso è quello in cui, avendo due stringhe di eguale lunghezza di caratteri, vogliamo verificare quali e quanti caratteri sono eventualmente diversi all'interno delle predette stringhe.

Potremo procedere utilizzando la funzione nativa "Mid()":

Public Sub Main()
 
 Dim s1, s2, sp, diversi As String
 Dim i, c As Integer
 
 s1 = "abcd efghi lmno"
 s2 = "abcr pqghillmno"
 
 For i = 1 To Max(Len(s1), Len(s2))
' Se i rispettivi caratteri in posizione j all'interno delle due stringhe non corrispondono fra loro...
   If Mid(s1, i, 1) <> Mid(s2, i, 1) Then
' ...allora viene incrementata la variabile "c" per determinare il totale dei caratteri differenti...
     Inc c
' ...nonché vengono aggiunti alla variabile, chiamata "diversi", affinché siano mostrati accoppiati in console:
     sp = Mid(s1, i, 1)
     If IsNull(sp) Then sp = Chr(32)
     diversi &= "\n" & sp & " | " & Mid(s2, i, 1)
   Endif
 Next
 
 Print "I caratteri diversi della stringa \"s1\" e della stringa \"s2\" sono:\n\ns1   s2\n------\n"; diversi
 Print "\nper un totale di "; c & " caratteri."
  
End

oppure si potranno usare le due variabili stringa, confrontando i loro indici:

Public Sub Main()
 
 Dim s1, s2, sp, diversi As String
 Dim i, c As Integer
 
 s1 = "abcd efghi lmno"
 s2 = "abcr pqghillmno"

 For i = 1 To Max(Len(s1), Len(s2)) - 1
   If s1[i, 1] <> s2[i, 1] Then
     Inc c
     sp = s1[i, 1]
     If IsNull(sp) Then sp = Chr(32)
     diversi &= "\n" & sp & " | " & s2[i, 1]
   Endif
 Next

 Print "I caratteri diversi della stringa \"s1\" e della stringa \"s2\" sono:\n\ns1   s2\n------\n"; diversi
 Print "\nper un totale di "; c & " caratteri."
  
End