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

Estrazione caratteri da una stringa

  1. #1
    ljt
    ljt non  in linea Scolaretto
    Salve,

    eccomi di ritorno con una nuova domanda.
    Come da titolo vorrei estrarre delle informazioni ben precise da una stringa simile alla seguente:
    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:
    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 1pc.
    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 Scribacchino
    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
    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

            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 
    ℹ️ Leggi di pi su AntonioG ...

  4. #4
    ljt
    ljt non  in linea Scolaretto
    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

            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:
    La lunghezza non pu essere minore di zero.
    Nome parametro: length
    
    Riporto il codice, tante le volte mi fosse sfuggito qualche cosa:
           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
    prova cos
    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
    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
    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
    ℹ️ Leggi di pi su AntonioG ...

  7. #7
    L'avatar di Max.Riservo
    Max.Riservo non  in linea Scribacchino
    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
    Maledetto correttore... newline
    ℹ️ Leggi di pi su AntonioG ...

  9. #9
    ljt
    ljt non  in linea Scolaretto
    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
    mettilo su dropbox o simili e posta il link

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

Potrebbero interessarti anche ...

  1. Ricerca ed estrazione di stringa
    Da iemmgi nel forum Microsoft Excel
    Risposte: 16
    Ultimo Post: 13-02-2013, 12:02
  2. estrazione di caratteri da parte di una stringa
    Da Newton nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 11-03-2011, 23:41
  3. estrazione di una stringa da un nomefile
    Da Newton nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 25-11-2009, 15:42
  4. [Access] estrazione dati da stringa
    Da brian nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 09-12-2008, 00:15
  5. problemi con estrazione stringa
    Da dani83 nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 09-08-2007, 12:12