+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: Estrazione caratteri da una stringa

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Post
    166

    Estrazione caratteri da una stringa

    Salve,

    eccomi di ritorno con una nuova domanda.
    Come da titolo vorrei estrarre delle informazioni ben precise da una stringa simile alla seguente:
    codice:
    uuid ( RO)           : f51bf12f-478c-79ed-c7bb-4eddeb8dc01f
         name-label ( RW): computer1
        power-state ( RO): running
    
    
    uuid ( RO)           : 28fbd099-47e0-4c5e-9cde-c072edbc998c
         name-label ( RW): Control domain on host: server01
        power-state ( RO): running
    
    
    uuid ( RO)           : 86689d31-3161-148a-9443-2987999228b4
         name-label ( RW): pc-01
        power-state ( RO): halted
    
    
    uuid ( RO)           : 6d223d11-77d4-9e04-94f4-e0a78abccdd0
         name-label ( RW): Windows-pc
        power-state ( RO): halted
    
    
    uuid ( RO)           : 127d385c-266f-4903-4827-4e4859c94b5c
         name-label ( RW): linuxpc
        power-state ( RO): halted
    Vorrei estrarre i nome di pc che compongono la suddetta stringa e cioè:
    - computer1
    - server01
    - pc-01
    - Windows-pc
    - linuxpc
    etc etc
    Da considerare che non si conosce la lunghezza di tale stringa, potrebbe contenere anche una ventina di nomi o anche uno solo.
    Al momento ho scritto 'sta roba:
    codice:
    Dim comando As String = Nothing 'contiene il risultato di un comando eseguito in un pc Linux
    Dim posizione As Integer = Nothing 'contiene la posizione del carattere ricercato 
    Dim nomepc As String = Nothing 'contiene l'eventuale nome del pc
    comando = cmd.Result
    posizione = InStr(1, comando, "( RW):")
    nomepc = Mid(comando, posizione + 7, 11) 
    MsgBox(nomepc)
    Ovviamente non va bene in quanto nella suddetta stringa c'è anche il valore:
    name-label ( RW): Control domain on host: server01
    Dunque il codice sopra riportato non andrebbe bene in quanto mi restituirebbe "Control dom" e solo il nome del 1°pc.
    L'altra cosa a cui avevo pensato è quella di scrivere la stringa in un file di testo e poi elaborarlo al meglio.
    La mia domanda è la seguente:
    Avete qualche consiglio su come procedere in un modo migliore?

    Grazie a tutti
    Ultima modifica di ljt; 21-11-2019 16:41 

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    320
    Io abbandonerei l'uso di Mid e InStr in favore dei metodi .NET String.Substring e String.IndexOf organizzandoli così:
    1)Trovo l'IndexOf dell'occorrenza di "( RW):";
    2)Trovo l'IndexOf dell'occorrenza di " power-state";
    3)Estraggo la Substring da [comando] dal primo indice al secondo;
    4)Ripeto punto 1, 2 e 3 a partire dall'indice al punto 1 aumentato di 1, n volte;

  3. #3
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,389
    Blogs
    5
    Dipende dal contenuto effettivo di quella stringa (che non è chiaro nel messaggio, sembra ci siano ritorni a capo in mezzo alla stringa, non si capisce se per l'editor del forum o se la stringa è proprio così) ... Se puoi allega un file e prova con questo

    codice:
            Dim v() As String = Strings.Split(comando, ":")
            For Each s As String In v
                If s.Contains("power") Then
                    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                End If
            Next
    Ultima modifica di AntonioG; 21-11-2019 17:33 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  4. #4
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Dipende dal contenuto effettivo di quella stringa (che non è chiaro nel messaggio, sembra ci siano ritorni a capo in mezzo alla stringa, non si capisce se per l'editor del forum o se la stringa è proprio così) ... Se puoi allega un file e prova con questo

    codice:
            Dim v() As String = Strings.Split(comando, ":")
            For Each s As String In v
                If s.Contains("power") Then
                    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                End If
            Next
    Ciao Antonio,

    ho provato a riportate il tuo codice, ma ottengo l'errore seguente:
    codice:
    La lunghezza non può essere minore di zero.
    Nome parametro: length
    Riporto il codice, tante le volte mi fosse sfuggito qualche cosa:
    codice:
           Dim comando_linux As String = cmd.Result
    
                Dim v() As String = Strings.Split(comando, ":")
                For Each s As String In v
                    If s.Contains("power") Then
                        Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                    End If
                Next
    Grazie mille per l'aiuto.

  5. #5
    patel45 non è in linea Scolaretto Ultimo blog: recupero dati da pagina html
    Post
    338
    Blogs
    1
    prova così
    codice:
    For Each s As String In v
     '    If s.Contains("power") Then MessageBox.Show(s)
         If s.Contains("power") Then MessageBox.Show(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
    Next
    a me funziona, se non ti funziona prova la riga commentata e magari prova anche
    codice:
    If s.Contains("power") Then MessageBox.Show(s.Trim.Substring(0, s.IndexOf(vbLf)))
    Ultima modifica di patel45; 27-11-2019 11:53 

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,389
    Blogs
    5
    Infatti avevo precisato che nel testo non si capiva se c'erano veline o no. A questo punto posta un file di testo reale contenente i dati da esaminare
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Post
    608
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    .... nel testo non si capiva se c'erano veline o no .....
    Devo fare un corso di aggiornamento : sono rimasto a quando dal testo si poteva estrarre solo il carattere ... ma non quello della velina !

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,389
    Blogs
    5
    Maledetto correttore... newline
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  9. #9
    ljt
    ljt non è in linea Scolaretto
    Post
    166
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Infatti avevo precisato che nel testo non si capiva se c'erano veline o no. A questo punto posta un file di testo reale contenente i dati da esaminare
    Ho provato a inserire il file seguendo la guida:

    FAQ MasterDrive.it

    ma poi mi sono accorto che non ho i permessi per allegare i file:

    Permessi di invio

    Puoi inserire discussioni
    Puoi inserire repliche
    Non puoi inserire allegati
    Puoi modificare i tuoi messaggi
    S'è un sistema alternativo per allegare un file?

    Grazie

  10. #10
    patel45 non è in linea Scolaretto Ultimo blog: recupero dati da pagina html
    Post
    338
    Blogs
    1
    mettilo su dropbox o simili e posta il link

+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi