Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    8

    riconoscere una stringa VB 2008

    ho necessita' di fare un programmino ke se in due text box scrivo esempio "ciao! come va?"
    e "ti saluto ciao!" lui riconosca ke ci sono due parole uguali "ciao!" e me la evidenzia o li scriva in un altra textBox. ho provato a scrivere tipo

    {if textBox1.Text=textBox2 then textBox3=textBox1 }

    e ovviamente lui me la riconosce solo se e' tutta uguale ,e nn quella determinta stringa.

    so ke e' banale ma nn ci salto fuori XD

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    La strada è quella di separare le parole delle due TextBox, per esempio mettendole in una coppia di array, e poi confrontare ciascun elemento della prima con ciascun elemento della seconda.

  3. #3
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Non occorrono 2 array.
    Ne basta uno solo, relativo alla prima TextBox. Per ottenerlo potrebbe essere sufficiente una Split utilizzando lo spazio come carattere separatore.
    Ogni elemento dell'array, potrebbe essere ricercato nel secondo TextBox con la IndexOf.
    Ovviamente si dovrebbe far caso a "liberare" le singole parole dai segni di interpunzione (basta una Replace) per ottenere un riscontro più preciso.

    In questo modo si compie un solo ciclo su un solo array, risparmiando tempo e risorse.

    Boolean

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Peccato che, non avendo cura di separare le parole anche dalla seconda TextBox, la IndexOf individuerebbe delle false corrispondenze nel caso in cui una parola della prima TextBox sia uguale ad una sottostringa di una parola della seconda.
    In ogni caso si farebbe comunque un solo ciclo sul solo primo array.

  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Se nel secondo testo si ha cura di eliminare i segni di interpunzione e si sostituisce lo spazio con un carattere di controllo, ad esempio il pipe (|) la ricerca non può dare falsi positivi con una sottostringa.

    Un esempio banale che non elimina virgole, punti, etc:

    codice:
            Dim sCont1 As String() = TextBox1.Text.Split(" ")
            Dim sCont2 As String = "|" & TextBox2.Text.Replace(" ", "|") & "|"
            Dim iRipetiz As Integer = 0
            For i As Integer = 0 To sCont1.GetUpperBound(0)
                If sCont2.IndexOf("|" & sCont1(i) & "|") >= 0 Then
                    iRipetiz += 1
                End If
            Next
            MessageBox.Show(iRipetiz)
    nelle frasi:

    sono andato al mare

    le sonorità del mare

    viene trovata solo 1 ripetizione relativa a mare e viene tralasciata la corrispondenza parziale tra sono e sonorità.

    Boolean

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Beh, allora si può anche fare a meno di sostituire lo spazio con il pipe
    codice:
           Dim sCont1 As String() = TextBox1.Text.Split(" ")
           Dim sCont2 As String = " " & TextBox2.Text & " "
           Dim iRipetiz As Integer = 0
           For i As Integer = 0 To sCont1.GetUpperBound(0)
                If sCont2.IndexOf(" " & sCont1(i) & " ") >= 0 Then
                    iRipetiz += 1
                End If
            Next
            MessageBox.Show(iRipetiz)

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    8
    Originariamente inviato da Boolean
    Se nel secondo testo si ha cura di eliminare i segni di interpunzione e si sostituisce lo spazio con un carattere di controllo, ad esempio il pipe (|) la ricerca non può dare falsi positivi con una sottostringa.

    Un esempio banale che non elimina virgole, punti, etc:

    codice:
            Dim sCont1 As String() = TextBox1.Text.Split(" ")
            Dim sCont2 As String = "|" & TextBox2.Text.Replace(" ", "|") & "|"
            Dim iRipetiz As Integer = 0
            For i As Integer = 0 To sCont1.GetUpperBound(0)
                If sCont2.IndexOf("|" & sCont1(i) & "|") >= 0 Then
                    iRipetiz += 1
                End If
            Next
            MessageBox.Show(iRipetiz)
    nelle frasi:

    sono andato al mare

    le sonorità del mare

    viene trovata solo 1 ripetizione relativa a mare e viene tralasciata la corrispondenza parziale tra sono e sonorità.

    Boolean
    :master: kakkio pensavo fosse piu semplice cmq grax 1000

  8. #8
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Sinceramente non mi pare una gran complessità... in effetti, nel codice che ho postato ci sono solo un paio di assegnazioni e un ciclo su un array.
    Prova a cercare sulla guida le varie funzioni, così potrai renderti conto di come operano, ampliando e modificando il codice per le tue esigenze.

    Boolean

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    E' vero. Forse ti abbiamo dato questa impressione perché ci siamo divertiti un po' a... punzecchiarci Ma se rileggi con attenzione, vedrai che non c'è niente di complicato.

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.