Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    differenze tra due stringhe

    esiste una funzione vb.net che mi calcoli di quanti caratteri si differenziano due stringhe senza dovere ricorrere a più cicli for next, comparando carattere per carattere?

    cioè, se ad esempio

    stringa1 = "gatto casa oltremare"
    stringa2 = "gatto casta oltre mare"

    si differenziano per una "t" ed uno spazio ==> risultato: 2

    tale risultato lo posso ottenere con una specifica funzione, o con qualche altro metodo più veloce di più cicli for-next?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    40
    http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx

    string.compare() non risolve i tuoi problemi?

  3. #3
    string.compare() non risolve i tuoi problemi?
    string.compare mi dice solo se due stringhe (o loro sottostringhe) sono uguali, maggiori o minori (risultato -1, 0, 1 )

    cioè se scrivessi solo string.compare(stringa1, stringa2) otterrei 1, ma lo otterrei anche se stringa2 fosse completamente diversa da string1, ma più lunga

    dovrei inserire comunque la funzione in un mare di cicli for-next, comparando sottostringhe di diversa lunghezza...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La compare gli dirà se i due dati sono uguali o (per ordine alfabetico parlando) diversi.

    Ma non gli darà quelle informazioni.

    Per avere "elencate" le differenze, tempo dovrai eseguire del codice con dei cicli ... (che potrai "generalizzare" in modo da usarlo quando e come vuoi).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    40
    si scusate mi son sbagliato.
    Eh si, mi sa che ti tocca ciclare...

  6. #6

    Re: differenze tra due stringhe

    Originariamente inviato da eziogsv
    esiste una funzione vb.net che mi calcoli di quanti caratteri si differenziano due stringhe senza dovere ricorrere a più cicli for next, comparando carattere per carattere?

    cioè, se ad esempio

    stringa1 = "gatto casa oltremare"
    stringa2 = "gatto casta oltre mare"

    si differenziano per una "t" ed uno spazio ==> risultato: 2

    tale risultato lo posso ottenere con una specifica funzione, o con qualche altro metodo più veloce di più cicli for-next?
    Cmq ti faccio notare che le due stringhe hanno ben più di due differenze infatti
    hai una t al posto di una a, di conseguenza poi avrai una a al posto di uno spazio, uno spazio
    al posto di una o e così via.

  7. #7

    Re: Re: differenze tra due stringhe

    Originariamente inviato da Max Mercury
    Cmq ti faccio notare che le due stringhe hanno ben più di due differenze infatti
    hai una t al posto di una a, di conseguenza poi avrai una a al posto di uno spazio, uno spazio al posto di una o e così via.
    ma è qui che nasce il problema! per quello che ho parlato di una marea di cicli for-next

    cioè, le differenze in realtà sono 2, ma se vado a fare dei cicli for-next, in effetti appena il ciclo scopre che "a"<>"t" a quel punto dovrò creare un altro ciclo: la "t" sostituisce la "a" o è in più? oppure è la "a" che è in più rispetto alla "t" e dopo la "a" c' è una "t" che va ad uguagliare la "t" di stringa2?

    altro ciclo per verificare se dopo la "t", fermo il ciclo che controlla la stringa1, stringa1 e stringa2 sono uguali, e fino a che punto... oppure viceversa

    insomma, sembra facile, ma non è che lo sia molto... per quello speravo in una funzione vb.net bella e fatta

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il problema, prima di tutto, è capire cosa vuoi fare tu e a cosa ti serve.

    E' ovvio che se le lunghezze delle stringhe sono diverse, queste hanno caratteri sicuramente in sequenza diversa.

    Non ho capito la questione dei cicli ma dipende tutto da cosa vuoi fare esattamente. E mi sembra una cosa così "specifica" che non è possibile che sia prevista da .NET ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    fondamentalmente voglio registrare QUANTI errori fa un OCR durante una sequenza di un centinaio di letture di una stessa frase, e QUALI LETTERE sbaglia a leggere (o toglie/aggiunge).

    i testi risultanti dalle varie letture dell' OCR sono quindi quasi sempre uguali, ma pur con frequenti piccole differenze (max 1 o 2 lettere o caratteri ASCII vari per singola lettura)

    stasera provo, ma fondamentalmente penso occorrerà:

    1) trovare la stringa più breve delle due

    2) usando come riferimento i singoli caratteri della stringa più breve, con un ciclo for-next verificare l' uguaglianza delle singole lettere/spazi

    3) alla prima differenza verificare se il carattere diverso della stringa più lunga è un carattere aggiunto o è semplicemente diverso

    In effetti è il lavoro che dovrebbe fare String.Compare

    Così come è adesso può essere benissimo sostituita dagli operatori + > <

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ora è più chiaro ma non è un compito semplice ...

    Secondo me, dovresti fare il confronto parola per parola e, quindi carattere per carattere all'interno della parola.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.