Hallo.
Ich stell mein Problem mal vereinfacht da.
ich habe ein string mit folgendem Aussehen:
Main
2
6
4
8
7
3
Main
4
5
7
9
jetzt möchte ich die Struktur so verändern, dass er hinteher so aussieht:
Main
X-Wert
Y-Wert
X-Wert
Y-Wert
X-Wert
Y-Wert
Main
X-Wert
Y-Wert
X-Wert
Y-Wert
Der Code meiner for schleife dazu sieht so aus:
for (int i = 0; i < str.Length -1; i++)
{
if (str[i] == "Main")
{
else
{ str[i] = "X-Wert";
str[i+1] = "Y-Wert";
i=i+1
}
}
Problem: Der letzte Wert wird nich verändert, also es bleibt die zahl stehen, da der index nicht zum letzten Element kommt.
Verändere ich die for Schleife so
for (int i = 0; i < str.Length; i++)
{
if (str[i] == "Main")
{
else
{ str[i] = "X-Wert";
str[i+1] = "Y-Wert";
}
}
wird eine Indexoutofrangeexception geworfen, weil er ja mit str[i+1] +über den index kommt.
Wie kann ich das richtig machen?
@JAck30lena:
Auf den ersten Blick hätte ich gesagt des wird so glaub ich nix.
Wenn des erste ein "Main" ist, dann überspringt er doch des nächste
ohne es zu ändern, oder seh ich da was falsch?!
mfg,
Lec
Meiner Meinung nach fehlt was:
for (int i = 0; i < str.Length -1; i += 2)
{
if (str[i] == "Main")
{ i--; }
else
{ str[i] = "X-Wert";
str[i+1] = "Y-Wert";
}
}
Weeks of programming can save you hours of planning
Oder so:
string[] values = new string[] {
"Main", "2", "6", "4", "8", "7", "3",
"Main", "4", "5", "7", "9",
};
int seq = 0;
for (int i = 0; i < values.Length; i++) {
seq++;
string s = values[i];
if (s == "Main") {
seq = 0;
}
else if (seq % 2 != 0) {
values[i] = "X-Wert";
}
else {
values[i] = "Y-Wert";
}
}
foreach (var s in values) {
TestContext.WriteLine(s);
}
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
ich habe das jetzt so gemacht wie MrSparkle.
Das Problem ist jetzt noch, wen ich das einlese:
Main
2
6
4
8
7
3
6
4
kommt das raus:
Main
x-Wert
y-Wert
x-Wert
y-Wert
also die hälfte der werte fehlt!