Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB2010 WinForm] Ricerca multipla con Instr

    Ho creato un codice che mi permette di cercare dentro un RichTextBox...
    Allora il codice è il seguente:
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
            Dim Cerca As String
            Dim Inizio As Integer
            Dim Fine As Integer
            Cerca = RichTextBox1.Text
    
            Inizio = InStr(1, Cerca, "")
            Fine = InStr(1, Cerca, "")
    
            MsgBox(Mid(Cerca, Inizio, Fine - Inizio))
    End Sub
    In poche parole questo codice mi permette di trovare nel mio RichTextBox una "scritta" tra "" e "".

    Questo invece è quello che contiene il RichTextBox:
    codice:
    testo1
    testo2
    testo3
    testo4
    Adesso io con il codice che uso attualmente, il MsgBox mi richiama soltando il primo, cioè "testo1" mentre gli altri no...

    Non so se mi sono spiegato bene, spero che abbiate capito il mio problema...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Adesso io con il codice che uso attualmente, il MsgBox mi richiama soltando il primo, cioè "testo1" mentre gli altri no...
    Beh, ovvio ... hai creato tu il codice, no ? E lo hai scritto per cercare unicamente il primo testo tra i tag quindi è normale che non funzioni per gli altri.

    Se includi il codice in un ciclo, cercando opportunamente nel testo a partire dal prossimo carattere utile nella stringa, allora avrai tutto ...

    In questo caso però, dovresti usare le Regular Expression al posto del codice con la Instr. Ad esempio

    codice:
    Imports System.Text.RegularExpressions
    e poi

    codice:
    Dim m As Match = Regex.Match(Cerca, "<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>", RegexOptions.IgnoreCase)
    While (m.Success)
       MessageBox.Show(m.ToString())
       m = m.NextMatch()
    End While
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ho provato ma non riesco, riusciresti a farmi un esempio? Grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai letto la mia risposta?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie dell'aiuto
    Ho risolto con questo codice:
    codice:
            Dim sb As New StringBuilder
            With RichTextBox1.Text
                Dim findIndex As Integer = .IndexOf("[b]", 0)
                Do While findIndex <> -1
                    Dim endsAt As Integer = .IndexOf("</ b>", findIndex)
                    sb.AppendLine(.Substring(findIndex + 3, endsAt - (findIndex + 3)).Trim)
                    findIndex = .IndexOf("[b]", endsAt)
                Loop
            End With
            MsgBox(sb.ToString)
    Adesso se vorrei eliminare tutto, e solo, quello che mi ha trovato? come faccio?

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.