Differenze tra le versioni di "Confrontare i caratteri di due stringhe"

Da Gambas-it.org - Wikipedia.
 
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(...)'', e l'intento sarà quello di
+
Potremo procedere utilizzando la funzione nativa "Mid()":
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim s1, s2, sp, diversi As String
 
   Dim s1, s2, sp, diversi As String
 
   Dim i, c As Integer
 
   Dim i, c As Integer
 
    
 
    
  s1 = "hola gamberos"
+
  s1 = "abcd efghi lmno"
  s2 = "hoLa gamberos del foro"
+
  s2 = "abcr pqghillmno"
 
    
 
    
  For i = 1 To Max(Len(s1), Len(s2))
+
  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>
 
  <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
+
    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>
 
  <FONT Color=gray>' ''...allora viene incrementata la variabile "c" per determinare il totale dei caratteri differenti...''</font>
      Inc c
+
      Inc c
 
  <FONT Color=gray>' ''...nonché vengono aggiunti alla variabile, chiamata "diversi", affinché siano mostrati accoppiati in console:''</font>
 
  <FONT Color=gray>' ''...nonché vengono aggiunti alla variabile, chiamata "diversi", affinché siano mostrati accoppiati in console:''</font>
      sp = Mid(s1, i, 1)
+
      sp = Mid(s1, i, 1)
      If IsNull(sp) Then sp = Chr(32)
+
      If IsNull(sp) Then sp = Chr(32)
      diversi &= "\n" & sp & " | " & Mid(s2, i, 1)
+
      diversi &= "\n" & sp & " | " & Mid(s2, i, 1)
    Endif
+
    Endif
  Next
+
  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."
 
    
 
    
  Print "I caratteri diversi della stringa \"s1\" e della stringa \"s2\" sono:\n\ns1  s2\n------\n"; diversi
+
End
  Print "\nper un totale di "; c & " caratteri."
+
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'''
+
  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