Confrontare i caratteri di due stringhe
Da Gambas-it.org - Wikipedia.
Versione del 23 giu 2023 alle 15:43 di Vuott (Discussione | contributi)
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