Datendatei editieren, neu ablegen, wie am besten

26/01/2009 - 22:06 von Martin Stöferle | Report spam
Hallo,

2 Punkte

a) File
b) . und ,

a)
Wie liest man am besten so ein File ein.

Für mich sind die Daten ab
:C-DATENIMPORT wichtig.

Danach muss ich das komplette File neu schreiben, optimiert ablegen.
Alles was davor oder danach ist muss ich mir mal merken.
Das können mal mehr mal wenigere Zeilen sein.

Wie kommt man da am schnellsten ans Ziel?

b) Zweitens:
X: 11,45, Y: 140,27
X: 11,45, Y: 201,86
X: 11,45, Y: 263,46
X: 151,59, Y: 263,46
X: 151,59, Y: 201,86
X: 151,59, Y: 140,27
X: 126,13, Y: 127,84
X: 266,34, Y: 127,84
X: 291,73, Y: 140,27
X: 291,73, Y: 201,86
X: 291,73, Y: 263,46
X: 406,56, Y: 127,84
X: 406,56, Y: 66,25
X: 266,34, Y: 76,25
X: 126,13, Y: 66,25

this.X = double.Parse( z[0],
System.Globalization.CultureInfo.InvariantCulture );
this.Y = double.Parse( z[1],
System.Globalization.CultureInfo.InvariantCulture );

Geschrieben werden soll das
X: 11.45, Y: 140.27
X: 11.45, Y: 201.86
sprich ein . statt ein ,

public override string ToString( )
{ return string.Format( "{0},{1}", X, Y ); }

Danke für Tipps.

Grüße Martin



Gesamtes File vom Kunden Input.txt
~~~~~~~~~~~~~~~~~~~~~~~~
:A-KUNDE-2701
261.80,002.80,000.00
266.80,002.80,000.00
271.80,002.80,000.00

:B-KUNDE-1203
dddd,eeeee,ddddd
281.80,002.80,000.00,NDC

:C-DATENIMPORT
;Liste
126.13,66.25
266.34,76.25
406.56,66.25
126.13,127.84
266.34,127.84
406.56,127.84
11.45,140.27
151.59,140.27
291.73,140.27
11.45,201.86
151.59,201.86
291.73,201.86
11.45,263.46
151.59,263.46
291.73,263.46

:D-KUNDE-55555
;Liste
MarkInk01,MarkInk02,MarkInk03,MarkInk04
 

Lesen sie die antworten

#1 Peter Fleischer
28/01/2009 - 08:09 | Warnen spam
"Martin Stöferle" schrieb im Newsbeitrag
news:upkaAo$
...
Danke für Tipps.



Hi Martin,
auf die Schnelle erstellt (ohne weitere Hintergrundinfos) könnte man das so
lösen:

static void Main(string[] args)
{
XElement xe0 = new XElement("root");
XElement xe1 = xe0;
XElement xe2 = null;
using (StreamReader sr = new StreamReader("TextFile1.txt"))
{
while (!sr.EndOfStream)
{
string s = sr.ReadLine();
if (s.Length == 0)
{
xe0.Add(new XElement("empty"));
xe1 = xe0;
}
else if (s.StartsWith(":"))
{
xe1 = new XElement("section");
xe1.Add(new XAttribute("type", s.Substring(1, 1)));
xe0.Add(xe1);
}
else if (s.StartsWith(";"))
{
xe2 = new XElement("list");
xe1.Add(xe2);
xe1 = xe2;
}
else
{
xe2 = new XElement("item");
xe1.Add(xe2);
foreach (var item in s.Split(','))
{
xe2.Add(new XElement("value", item));
}
}
}
}
var res1 = from itm2 in
(from itm1 in xe0.Descendants("section")
where itm1.Attribute("type").Value == "C"
select itm1).Descendants("item")
select itm2;

foreach (var item in res1)
{
var res2 = (from itm in item.Descendants("value") select
itm).ToArray();
double x = double.Parse(res2[0].Value,
CultureInfo.InvariantCulture);
double y = double.Parse(res2[1].Value,
CultureInfo.InvariantCulture);
Console.WriteLine(string.Format(" X: {0}, Y: {1}", x, y));
}
Console.ReadLine();
}


Viele Grüsse
Peter

Ähnliche fragen