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

    [vb.net] Eliminare testo fra 2 caratteri

    SAlve, spero di porre un quesito interessante e non banale:
    Data una stringa come faccio ad eliminare il testo compreso fra due caratteri?

    es: testo che rimane <testo1 da eliminare>altro testo che rimane ,.ojmk altro testo che rimane <testo2 da eliminare>

    In pratica voglio eliminare i testi compresi fra i caratteri < e > (poi < e > li elimino con un replace)

    Ho provato con gli spit ma mi ci sono incasinato e mi sembra una soluzione complicatina.

  2. #2

  3. #3
    Il codice che ho prodotto era così sbagliato che non avrebbe mai funzionato nel mondo reale.

    Infatti la stringa potrebbe iniziare o meno per < e quindi non funziona. Inoltre non teneva conto di quanti potevano essere i testi da eliminare.

    Mi chiedevo se qualcuno ha già affrontato il problema.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Potresti far eseguire un loop su una variabile di tipo String a cui avrai assegnato il testo da esaminare.
    Ad ogni loop, usando IndexOf() trovi la posizione dei delimitatori "<" e ">" (usa 2 variabili per memorizzarne la posizione);
    poi usi il metodo Remove per rimuovere la parte da eliminare (cioè <testo1 da eliminare>).

    Prosegui il loop:
    se il primo IndexOF("<") ti restituisce un valore > 0 allora esegui il codice del loop,
    altrimenti se restituisce -1 significa che non vi sono più delimitatori "<" ed interrompi.

    Adesso prova a documentarti ed a buttar giù qualche riga di codice...


  5. #5
    Mi sembra la stess asoluzione che avevo pensato oggi mentre ero in macchina diretto da un mio cliente....... non mi rimane che metterla in opera e se risolvo postare il codice finale qui.

  6. #6
    Ecco il codice

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    'Button6.Text = Me.elencopagine.Lines.Count
    Dim stringa As String = "il mio <amico>antonio <ieri> è andato al mare"

    pulitrice(stringa)

    Me.TextBox2.Text = stringa
    End Sub



    Sub pulitrice(ByRef stringa As String)

    Dim i1, i2 As Integer

    i1 = stringa.IndexOf("<")
    i2 = stringa.IndexOf(">")
    While i1 >= 0 And i2 >= 0
    stringa = stringa.Remove(i1, i2 - i1 + 1)
    i1 = stringa.IndexOf("<")
    i2 = stringa.IndexOf(">")
    End While





    End Sub

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ottimo, hai visto che ce l'hai fatta? Bravo!
    Personalmente avrei impostato la routine pulitrice come una Function, invece di una Sub, che restituisce il valore di stringa elaborato:

    codice:
    Private Sub Button6_Click(...)
        Dim stringa As String = "il mio <amico>antonio <ieri> è andato al mare"
        Me.TextBox2.Text = pulitrice(stringa)
    End Sub
    
    Private Function pulitrice(ByVal stringa as String) As String
        ' tuo codice ....
    
        ' restituisco il valore elaborato
        pulitrice = stringa
    End Function
    Ma è solo questione di gusti.

    P.S.
    però la prossima volta formatta il codice usando il pulsante [CODE]
    come ho fatto io...


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.