Confrontare i caratteri di due stringhe: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
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 16: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