Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    Lettere uguali in una variabile

    Salve e grazie in anticipo a chi risponde.

    Vorrei cercare in una variabile tipo: AC QC AF JC 10C 9C AQ tutte le "A" presenti in questa stringa in questo caso ricevere 3 come risposta.
    Ho provato con instr ma ricevo solo la posizione vi faccio un esempio più chiaro.

    variabile = AC AF AQ 4C KQ KF 2P
    ecco qui a me servirebbero due condizioni, 2 "K" e le 3 "A" come faccio per interrogarlo senza scrivere troppe righe di codice?

    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Indica sempre il linguaggio nel titolo.
    Immaginando che si parli di VB6, la strada della funzione Instr() va bene se devi contare le occorrenze di solo alcune predeterminate lettere, come sembrerebbe dal tuo esempio.
    Se invece vuoi fare il conteggio per tutti i diversi caratteri presenti nella stringa, devi esaminare un carattere per volta ed aiutarti con un array.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    domanda

    Ciao si parlo del visual basic cmq si esatto come avevo già scritto la funz instr mi restituise la posizione quindi se io scrivessi:

    if instr(variab, "A") > 0 and instr(variab, "A") > 0 then
    msgbox "2"

    ma uscirebbe sempre il valora della prima posizione della A quindi il risultato sarebbe sempre positivo anke con una "A"

    Avete degli esempi?? grazie ancora.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Inserisci il valore della prima Instr in una variabile. Ad esempio

    v1 = Instr(stringa, "A")

    In seguito, esegui la Instr nuovamente a partire dal carattere successivo, indicandolo all'inizio della Instr stessa (di cui ti invito a leggere la documentazione ... ). Quindi

    v1 = Instr(v1+1, stringa, "A")
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

    Re: Lettere uguali in una variabile

    Originariamente inviato da shinji83
    Salve e grazie in anticipo a chi risponde.

    Vorrei cercare in una variabile tipo: AC QC AF JC 10C 9C AQ tutte le "A" presenti in questa stringa in questo caso ricevere 3 come risposta.
    Ho provato con instr ma ricevo solo la posizione vi faccio un esempio più chiaro.

    variabile = AC AF AQ 4C KQ KF 2P
    ecco qui a me servirebbero due condizioni, 2 "K" e le 3 "A" come faccio per interrogarlo senza scrivere troppe righe di codice?

    grazie.
    Puoi anche usare questo "trucchetto":
    - ricavi una seconda variabile sostituendo nella prima variabile la lettera da cercare con "" (cioe' stringa nulla), tramite un semplice Replace$().
    - la differenza tra la lunghezza della stringa originaria e la lunghezza della seconda rappresentera' il numero di lettere sostituite, cioe' cio' che cerchi !

    (ovviamente se anziche' una sola lettera cerchi delle generiche sottostringhe, dovrai dividere la differenza di cui sopra per la lunghezza della sottostringa cercata)

    Prova... e' piu' semplice da fare che da descrivere !
    ...e puoi costruirti la funzione con UNA riga di codice !
    IceCube_HT (VB6 fan Club)

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    Grazie

    vi volevo ringraziare ho messo insieme i vostri consigli utili e sono arrivato alla conclusione di fare così, posto il codice magari può servire a qualcun'altro.

    Dim g1, g2, g3 As Integer
    Dim forcount As Integer
    For forcount = 1 To 3
    g1 = InStr(combinazione, "A")
    g2 = InStr(g1 + 1, combinazione, "A")
    g3 = InStr(g2 + 1, combinazione, "A")
    Next
    If g1 And g2 And g3 > 0 Then
    MsgBox "Tris A"
    End If

    se magari voi lo accorciate di più postate , è sempre utile. grz a tutti.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    scusate

    ragazzi un ultima cosa non capisco ke succede vi posto il codice

    Private Sub Command2_Click()
    Dim car1, car2, car3, car4, car5 As Integer
    Dim forcount As Integer
    combinazione = "AC QC AF KC 3Q KQ AC"
    For forcount = 1 To 5
    car1 = InStr(combinazione, "A")
    car2 = InStr(car1 + 1, combinazione, "A")
    car3 = InStr(car2 + 1, combinazione, "A")
    car4 = InStr(combinazione, "K")
    car5 = InStr(car4 + 1, combinazione, "K")
    Next
    If car1 And car2 And car3 And car4 And car5 > 0 Then
    MsgBox "tre A due K"
    End If

    mi da il risultato fino a car4 xkè? il for nn va oltre il 4? -.-
    eppure a me il code sembra giusto dove sbaglio?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    risolto

    come non detto ho risolto così

    Private Sub Command2_Click()
    Dim car1, car2, car3, car4, car5 As Integer
    Dim forcount As Integer
    combinazione = "AC QC AF KC 3Q KQ AC"
    For forcount = 1 To 5
    car1 = InStr(combinazione, "A")
    car2 = InStr(car1 + 1, combinazione, "A")
    car3 = InStr(car2 + 1, combinazione, "A")
    car4 = InStr(combinazione, "K")
    car5 = InStr(car4 + 1, combinazione, "K")
    Next
    If car1 > 0 And car2 > 0 And car3 > 0 And car4 > 0 And car5 > 0 Then
    MsgBox "tre A due K"
    End If

    ciao.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Tu credi di aver risolto, ma non è così.
    Il ciclo For...Next che hai inserito è del tutto inutile. Quell' If...Then finale è sbagliata.
    In ogni caso, anche se il codice che hai postato non contenesse errori, si limiterebbe a contare un massimo di tre A e due K, ignorando gli altri caratteri.

  10. #10

    Re: risolto

    Originariamente inviato da shinji83
    come non detto ho risolto così

    Private Sub Command2_Click()
    Dim car1, car2, car3, car4, car5 As Integer
    Dim forcount As Integer
    combinazione = "AC QC AF KC 3Q KQ AC"
    For forcount = 1 To 5
    car1 = InStr(combinazione, "A")
    car2 = InStr(car1 + 1, combinazione, "A")
    car3 = InStr(car2 + 1, combinazione, "A")
    car4 = InStr(combinazione, "K")
    car5 = InStr(car4 + 1, combinazione, "K")
    Next
    If car1 > 0 And car2 > 0 And car3 > 0 And car4 > 0 And car5 > 0 Then
    MsgBox "tre A due K"
    End If

    ciao.
    MMmmm. che pastrocchio ! VVoVe:

    Comunque, visto che hai risolto (o meglio, credi... come dice Grumpy, ciclo For..Next inutile, If..Then errato, ecc...), ti posto la mia soluzione, con una funzione di uso un po' piu' generale:
    codice:
    Private Sub CommandButton1_Click()
        Debug.Print QuanteVolte("AC QC AF KC 3Q KQ AC", "a")  '==>  3
        Debug.Print QuanteVolte("AC QC AF KC 3Q KQ AC", "k")  '==>  2
    End Sub
    
    Public Function QuanteVolte(stringa As String, DaCercare As String) As Integer
        QuanteVolte = (Len(stringa) - Len(Replace$(stringa, DaCercare, "", , , vbTextCompare)) / Len(DaCercare))
    End Function
    IceCube_HT (VB6 fan Club)

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.