|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
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... 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 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; } } Codice:
09.00.0000.00 .3000COD04 .3000COD08913 .2000COD02 11.10.0000.00 .1500COD04 .3000COD1921 .3000COD70 Grazie a tutti.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 |
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; } }
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Grazie mille U235 !
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Nov 2009
Messaggi: 56
|
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:18.