|
|||||||
|
|
|
![]() |
|
|
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: 12:08.




















