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

    Funzione Split()

    Volevo usare la funzione Split per scompattare un file in tante part.

    Volevo usare la funzione split con delimitatore di testo.

    Volevo che il testo delimitatore fosse JPG.

    Quindi dato un file con questo testo

    codice:
    aaaaaaaJPGbbbbbbbbbbJPGcccccc
    Crei 3 file

    codice:
    - 1° file
    aaaaaaa
    - 2° file
    JPGbbbbbbbbbb
    - 3° file
    JPGcccccc
    Oppure se è
    codice:
    JPGaJPGb
    Deve creare
    codice:
    - 1° file
    JPGa
    - 2° file 
    JPGb
    E se volessi fare che il programma salvasse i file splittati (con estensione *.JPG[dove la * è un numero che parte da 1. quindi 1.JPG,2.JPG..........]) in una cartella che creerà nella directory dove c'e' il file da scompattare che si chiami "JPG".

    Mi potete postare un codice base per l'uso dello Split() in questo modo?
    Visto che in rete ho trovato solo esempi per C++ (vorrei creare applicazioni con form in C++ se sapessi come )

    Saluti e grazie ancora.

  2. #2

    Re: Funzione Split()

    Prima una precisazione:
    "aaaaaaaJPGbbbbbbbbbbJPGcccccc" diviso con Split restituisce {"aaaaaaa", "bbbbbbbbbb", "cccccc"}, perchè i "JPG" non vengono contati.

    Allora, potresti usare la funzione split delle stringhe sul testo del file in questo modo:
    codice:
    'Con lo stream reader legge tutto il contenuto del file
    Dim R As New IO.StreamReader(<file da dividere>)
    'E lo deposita in S
    Dim S As String = R.ReadToEnd
    'Quindi chiude il file, che ormai non serve più
    R.Close()
    
    'Crea un array di char che rappresenta il separatore "JPG"
    Dim ParamSeparator() As Char = {"J", "P", "G"}
    'Separa il testo del file in base al separatore e deposita
    'gli elementi divisi in un array di stringhe
    Dim Files() As String = S.Split(ParamSeparator)
    
    'Dichiara un file per la scrittura
    Dim W As IO.StreamWriter
    
    'Esegue un ciclo che si ripete per la lunghezza di Files 
    'ossia delle parti divise
    For I As UInt16 = 0 To Files.Length - 1
      'A ogni step crea un nuovo file, utilizzando il contatore come nome
      'Si creerà 1.jpg, 2.jpg ecc...
      W = New Io.StreamWriteer(I+1 & ".jpg")
      'Scrive il contenuto di Files(i) sul file
      W.Write(Files(I))
      'Chiude il fle
      W.Close()
    Next

  3. #3
    ma a me serve qualcosa che prenda in considerazione anche i JPG.
    Io ho bisogno che vadano contati.

  4. #4
    Originariamente inviato da flash.tato
    ma a me serve qualcosa che prenda in considerazione anche i JPG.
    Io ho bisogno che vadano contati.
    Ma almeno conosci la sintassi del vb? Il ciclo for li conta, tutti i file verranno rinominati seguendo un ordine numerale che corrisponde al numero delle parti. E se vuoi il numero delle stringhe "JPG" in tutto il file basta fare Files.Length - 1.

  5. #5
    Mi sa che non hai capito

    A me serve che se il file è così
    codice:
    aaaaaaaJPGbbbbbbbbbbJPGcccccc
    Crei tre file così
    codice:
    - 1° file
    aaaaaaa
    - 2° file
    JPGbbbbbbbbbb
    - 3° file
    JPGcccccc
    Dove se prima del 1" JPG c-e- del testo crei un file con quel testo prima del 1" JPG e che i file successivi devono iniziare obbligatoriamente con "JPG"

  6. #6
    Originariamente inviato da flash.tato
    Mi sa che non hai capito

    A me serve che se il file è così
    codice:
    aaaaaaaJPGbbbbbbbbbbJPGcccccc
    Crei tre file così
    codice:
    - 1° file
    aaaaaaa
    - 2° file
    JPGbbbbbbbbbb
    - 3° file
    JPGcccccc
    Dove se prima del 1" JPG c-e- del testo crei un file con quel testo prima del 1" JPG e che i file successivi devono iniziare obbligatoriamente con "JPG"
    Allora devi creare files senza testo all'interno? ok...
    codice:
    'Con lo stream reader legge tutto il contenuto del file
    Dim R As New IO.StreamReader(<file da dividere> )
    'E lo deposita in S
    Dim S As String = R.ReadToEnd
    'Quindi chiude il file, che ormai non serve più
    R.Close()
    
    'Crea un array di char che rappresenta il separatore "JPG"
    Dim ParamSeparator() As Char = {"J", "P", "G"}
    'Separa il testo del file in base al separatore e deposita
    'gli elementi divisi in un array di stringhe
    Dim Files() As String = S.Split(ParamSeparator)
    
    'Dichiara un file per la scrittura
    Dim W As IO.StreamWriter
    
    'Esegue un ciclo che si ripete per la lunghezza di Files 
    'ossia delle parti divise
    For Each S As String In Files
      'A ogni step crea un nuovo file, utilizzando il contatore come nome S
      W = New Io.StreamWriteer("JPG" + S + ".jpg")
      'Chiude il fle
      W.Close()
    Next

  7. #7
    Non so perchè ma continua a non funzionarmi

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.