Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-01-2017, 18:00   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[c#] Raggruppare dati e convertire file di testo

Premessa: non è possibile utilizzare LinQ !

Ciao a tutti.

Ho un file di testo così composto:

Codice:
17,"09:00"
6,"COD04",01,0,"3000"
6,"COD08913",01,0,"3000"
6,"COD02",03,0,"2000"
16
17,"11:10"
6,"COD04",02,0,"1500"
6,"COD1921",01,0,"3000"
6,"COD70",05,0,"3000"
16

etc...
in pratica, i codici "17" e "16" indicano l'inizio e la fine del raggruppamento.
Io devo convertirli in questo modo:
Codice:
09.00.0000.00.3000COD04
09.00.0000.00.3000COD08913
09.00.0000.00.2000COD02
11.10.0000.00.1500COD04
11.10.0000.00.3000COD1921
11.10.0000.00.3000COD70
Ho iniziato ragionando prima sull'aprire il file ovviamente e a cercare di individuare i campi che mi interessano:

Codice:
string[] righe = File.ReadAllLines(mioFile);
foreach(string riga in righe)
{
    string[] colonna = riga.Split(new char[] {','});
    int head = int.Parse(colonna[0]);
    switch (head)
    {
         case 6:
         string testCodice = colonna[1].Replace("\"", "");
         string testValoreCoda = colonna[4].Substring(colonna[4].Length - 6, 3);
         Console.WriteLine("." + testValoreCoda + testCodice);
         break;

         case 16:
         break;

         default:
         string testOrario = colonna[1].Replace("\"", "");
         testOrario = testOrario.Replace(":", ".") + ".0000.00";
         Console.WriteLine(testOrario);
         break;
    }
}
Aldilà dell'eleganza / efficienza o meno, riesco ad "isolare" i dati che mi interessano, infatti ciò che mi viene stampato a video è:

Codice:
09.00.0000.00
.3000COD04
.3000COD08913
.2000COD02
11.10.0000.00
.1500COD04
.3000COD1921
.3000COD70
Potete darmi una mano sul ragionamento ?

Grazie a tutti.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2017, 18:21   #2
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
Ciao, non so ma ho come l'impressione che tu stia ragionando in maniera troppo "complessa".
Ogni riga del risultato la scrivi (compresa di parte iniziale) per ogni "codice" 6, e la parte iniziale cambia solo con il 17, questo dovrebbe bastarti fare lo switch solo su questi. Inoltre sai che i valori che compongono ogni riga 6 sono sempre nella stessa posizione all'interno del vettore dopo lo split (a meno che non abbia omesso qualcosa nella tua esposizione), quindi basta comporre la stringa posizionando i giusti elementi del vettore in fila, senza la necessità di fare calcoli sulla posizione dei caratteri, in fine fai un replace dei doppi apici in tutta la riga.

Codice:
            var head = string.Empty;
            foreach(var riga in righe)
            {
                string[] colonna = riga.Split(new char[] {','});
                switch (int.Parse(colonna[0]))
                {
                     case 6:
                     Console.WriteLine((head + colonna[4] + colonna[1]).Replace("\"", ""));                     
                     break;
                     
                     case 17:                     
                     head=string.Format("{0}.0000.00.",colonna[1].Replace(":", "."));
                     break;
                }
            }
Qui puoi testarlo online.
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2017, 23:35   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Grazie mille U235 !
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2017, 15:51   #4
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
Grazie mille U235 !
Figurati
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
AMD lancia in segreto quattro nuovi Ryze...
Maxi blitz contro lo streaming pirata: u...
PS5: oggi l'update che introduce il Powe...
Tesla apre le vendite del Cybertruck neg...
realme Watch 5: il nuovo smartwatch arri...
AV2 in arrivo entro fine anno: il nuovo ...
Echo, Kindle e Fire TV: Amazon prepara u...
Shai-Hulud è il worm auto-replica...
Stop a benzina e diesel dal 2035, ecco c...
Gli strumenti di scrittura AI arrivano s...
Tesla tenta l'azzardo in Europa: produzi...
OpenAI cerca un esperto di contenuti: ha...
Consumer Reports attacca Microsoft: 'Con...
Lo strumento salva-guai che ogni automob...
Le copie fisiche dei giochi non valgono ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v