Differenze tra le versioni di "Confrontare i caratteri di due stringhe"
Da Gambas-it.org - Wikipedia.
(5 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
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. | 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 ''Mid(... | + | Potremo procedere utilizzando la funzione nativa "Mid()": |
− | ''' | + | Public Sub Main() |
− | + | ||
− | Dim s1, s2, diversi As String | + | Dim s1, s2, sp, diversi As String |
− | Dim | + | Dim i, c As Integer |
− | + | ||
− | + | s1 = "abcd efghi lmno" | |
− | + | s2 = "abcr pqghillmno" | |
+ | |||
+ | For i = 1 To Max(Len(s1), Len(s2)) | ||
+ | <FONT Color=gray>' ''Se i rispettivi caratteri in posizione j all'interno delle due stringhe non corrispondono fra loro...''</font> | ||
+ | If Mid(s1, i, 1) <> Mid(s2, i, 1) Then | ||
+ | <FONT Color=gray>' ''...allora viene incrementata la variabile "c" per determinare il totale dei caratteri differenti...''</font> | ||
+ | Inc c | ||
+ | <FONT Color=gray>' ''...nonché vengono aggiunti alla variabile, chiamata "diversi", affinché siano mostrati accoppiati in console:''</font> | ||
+ | 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 |
Versione attuale delle 15:43, 23 giu 2023
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