none
Ricerca Stringa Parziale Visual Basic RRS feed

  • Domanda

  • Buonasera, avrei questo quesito da porre.

    Supponiamo che ho questo file denominato esattamente così.

    Q_01234567891_20150202_67241_0000009.pdf

    Vorrei capire qual è il metodo e il comando più veloce che mi permette di ricercare nella stringa sopra indicata il testo all'interno di 2 underscore ovvero in questo caso sarebbe il numero 67241.

    Il numero all'interno dei 2 underscore è variabile quindi può diventare anche a 6 cifre. Mi serve capire il procedimento che impiega meno calcoli in quanto dovrò poi confrontare migliaia di file nel mio progetto.

    Grazie.

    Daniele


    mercoledì 18 febbraio 2015 15:31

Tutte le risposte

  • Buonasera Daniele,

    personalmente, farei in questo modo:

            Dim nomefile As String = "Q_01234567891_20150202_67241_0000009.pdf"
    
            Dim parziale As String = nomefile.Split("_")(3).ToString
            MsgBox(parziale)

    Ovvero, data una stringa formattata come hai scritto, la si può scomporre con il metodo Split(), utilizzando come carattere di separazione l'underscore. Otterrai quindi un array di stringhe di 5 posizioni (da 0 a 4), il cui terzo elemento (considerando che partiamo da base zero) è quello che ti serve.

    Spero di esserti stato di aiuto


    Emiliano Musso // Microsoft MVP .NET


    • Modificato Emiliano Musso mercoledì 18 febbraio 2015 15:53
    • Proposto come risposta Fabio Mannis mercoledì 18 febbraio 2015 16:23
    mercoledì 18 febbraio 2015 15:52
  • Ciao Daniele,

    la strada che ti indica Emiliano se non la più veloce (probabilmente lavorando su array di char e ciclando cercando il tuo separatore, dovresti poter essere piu veloce....) è sicuramente la più snella a livello di codice da scrivere, un solo appunto mi pare di aver capito che a te serve "...il testo all'interno di 2 underscore..." quindi non hai solamente il numero 67241 ma 01234567891, 20150202 e 67241 in quanto tutti all'interno di due underscore.

    In questo caso dovresti prendere del tuo array di stringhe tutte gli elementi compresi tra il primo e l'ultimo.

    Se invece interpreto male la tua richiesta e ti serve solo 67241 e il formato della stringa è sempre la stessa allora ignorami :)

    mercoledì 18 febbraio 2015 16:20
  • Buongiorno,

    un'altra soluzione potrebbe essere quella di lavorare con le Regular Expression.

    Un abbraccio

    Daniele


    giovedì 19 febbraio 2015 08:59
  • Ringrazio tutti per l'interessamento e soprattutto un forum dalle pronte risposte. Ho risolto con il codice di Emiliano è esattamente quello che cercavo. Grazie mille e buon week end a tutti voi!
    sabato 21 febbraio 2015 09:29