+ Rispondi al messaggio
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 18 su 18

Individuare la posizione di più caratteri in una stringa

  1. #11
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao, scusate se rispondo con un pò di ritardo.
    Ho risolto in questo modo:
            Dim testo As String = "!C!iaoooo!oo!"
    
            Dim posizione As Integer = 0
    
            Dim elementi_array() As String
            ReDim elementi_array(Len(testo) - Len(Replace(testo, "!", "")))
    
            For a As Integer = 0 To Len(testo) - Len(Replace(testo, "!", "")) - 1
                posizione = testo.IndexOf("!", posizione)
                elementi_array(a) = CStr(posizione) ' Array con la posizione dei caratteri !
                posizione = posizione + 1
            Next
    
    Ciao.

  2. #12
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,084
    Like Inviati  
    2
    Like Ricevuti  
    4
    Hai seguito le indicazioni ricevute solo in parte.
    Con un ciclo Do While... Loop (o Do Until) al posto del ciclo For...Next non hai bisogno di sapere a priori la lunghezza della stringa da esaminare perché IndexOf ti restituirà -1 quando non troverà più nessun !.
    Ripeto il consiglio di non usare funzioni obsolete (Replace, Len).
    ℹ️ Leggi di più su Brontolo ...

  3. #13
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,346
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    30
    A parte il fatto che non hai seguito il consiglio di non usare la Replace (anche perché inutile), hai usato anche un array di tipo stringa, cosa inutile dato che le posizioni sono numeriche.

    Direi di usare le Liste e i cicli corretti

            Dim testo As String = "!C!iaoooo!oo!"
    
            Dim posizione As Integer = 0
            Dim posizioni As List(Of Integer) = New List(Of Integer)
    
            posizione = testo.IndexOf("!", posizione)
            Do While posizione >= 0
                posizioni.Add(posizione)
                posizione = testo.IndexOf("!", posizione + 1)
            Loop
    
    ℹ️ Leggi di più su AntonioG ...

  4. #14
    Post
    1,863
    Blogs
    21
    Like Inviati  
    13
    Like Ricevuti  
    11
    un'altra soluzione potrebbe essere questa che usa il metodo di estensione Select delle stringhe e Linq

     Dim posizioni = testo.Select(Function(c, i) New With {Key .value = c, Key .index = i}) _
                          .Where(Function(k) k.value = "!") _
                          .Select(Function(k) k.index).ToArray
    
    ma è tanto bella quella con IndexOf e While che mi sembra di sparare alle mosche con un cannone
    ... e poi alla fine è solo un ciclo alla "famolo strano''
    Ultima modifica di sspintux; 03-01-2021 21:58 
    ℹ️ Leggi di più su sspintux ...

  5. #15
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Post
    2,854
    Like Inviati  
    7
    Like Ricevuti  
    0
    Signori,siate clementi...imparerà prima o poi,iniziamo l'anno con l'essere buoni...gli avete dato delle dritte?bene,se ha buon senso si documenterà di quello che avete proposto....è un pò come se voi foste alle prime armi con la musica ed io vi dico di scrivermi una scala ascendente diatonica del RE#(per chi non lo sà,si dice RE DIESIS),naturalmente la mia è una battuta ma che ha un fondamento di verità.
    ℹ️ Leggi di più su sistemista ...

  6. #16
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,346
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    30
    È sempre utile fornire codici che facciano meglio quanto richiesto e non solo per chi ha aperto la discussione (che può trarne beneficio aggiornando le proprie conoscenze) ma, soprattutto per gli altri, per quelli che cercheranno questo argomento e troveranno che in questo forum hanno avuto una soluzione concreta.
    ℹ️ Leggi di più su AntonioG ...

  7. #17
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti.
    Come ha già scritto sistemista anche io vi chiedo di essere un pochino clementi con me. Devo ancora imparare moltissimo e mi scuso in anticipo se i codici che scrivo presentano problemi o se posto delle domande che per voi sono banali.
    Ciao.

  8. #18
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,346
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    30
    Non è questione di essere clementi, nessuno ti ha torturato. Ti abbiamo fatto notare che alcune cose vanno migliorate. Ad esempio ti avevo detto che il Replace non dovevi usarlo, quindi avresti potuto approfondire il perché di questo suggerimento.
    Un codice si può sempre migliorare ed è importante capire come e perché.
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio
Pagina 2 di 2 primaprima 12

Potrebbero interessarti anche ...

  1. Estrazione caratteri da una stringa
    Da ljt nel forum Visual Basic .Net
    Risposte: 31
    Ultimo Post: 02-12-2019, 12:57
  2. Posizione Stringa
    Da edo1992 nel forum Delphi
    Risposte: 10
    Ultimo Post: 05-12-2013, 18:43
  3. Individuare posizione tra due date
    Da carlitosx nel forum Microsoft Access
    Risposte: 26
    Ultimo Post: 08-05-2013, 09:58
  4. individuare tutte le righe con stringa
    Da snowscience nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 01-07-2009, 09:40
  5. caratteri in una stringa
    Da simonemtb nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 14-12-2004, 17:30