Hallo, ich habe ein Problem,
Ich weiß nicht ob es an der Hitze liegt,
oder daran das ich nix zum essen habe:
Ich habe einen String der mir eine Zahl in folgendem Format liefert:
1.00.000100
Nun möchte ich die Zahl um "1" erhöhen.
Also auf
1.00.000101
stringname = stringname + 1
geht ja nur wenn der eigendliche String auch eine natürliche Zahl währe,
also wenn der String das Format "1000" oder so hätte.
Kann mir mal jemand bei diesem (doch wohl eher) Anfängerfehler 🙁 unter die arme greifen?
Dankeschön!
👶-> :]-> 8o-> 🙂
Hi,
du kannst keinen string mathematisch bearbeiten.
Du müsstest den letzten teil des strings in ein Integer kovertieren und diesen dann mit 1 addieren.
Danach den Integer wieder nach string konvertieren.
1.00.000100
Nun möchte ich die Zahl um "1" erhöhen.
Also auf1.00.000.101
nach welchen kriterien wird der punkt eingefügt?
ansonsten kannst du ja ein split machen, dann ein parse und schließlich wieder ein string.format
also
1.quellstring.split by "."
2.int.Parse auf das letze element aus punkt 1
3.increment int aus punkt 2
4.string.format vom punkt 3
Du könntest den String an '.' spliten.
Danach ein Convert.ToInt32 des letzten Substrings
int zahl += 1;
Wieder in einen String konvertieren und mit string.Concat den String wieder zusammenfügen.
Was anderes fällt mir auf die schnelle nicht ein 😁
JAck30lena war schneller 😜
Leute vergesst das mit dem Split (... was ist wenn der hinterste Block aus lauter 999 besteht ...)
So was löst man mit einem Einzeiler
string source="1.00.000100";
source=(int.Parse(source.Replace(".",string.Empty))+1).ToString(@"#\.##\.######");
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
@Jack30lena
Ich schreibe viel Code für den Codedom... und da lernt man möglichst viel auf einer Zeile reinzuhauen (eine Codedom-Zeile = 1 Zeile generierter Code)... anderenfalls hast Du hunderte oder tausende lokale Variablen und blickst nachher auch nicht wirklich durch.
Aber das soll jeder so machen wie er will... ich mache es auf einer Zeile.. und Du auf n-Zeilen.
Gruss
CodeDom-Hans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Programmierhans:
Das sieht ja schon ganz praktisch aus.
Aber was machst du, wenn da ein komplettes Custom-Format drin ist?
Sinniger wäre hier ein int.Parse, welches das Format mitbekommt.
Man denke hier an andere Anwendungen, beispielsweise hexdezimale Formatierungen und ähnliches.
Hast du da zufällig auch was rumliegen?
So ala:
//Achtung, Pseudo-mäßig, weiß nicht ob das in der Art überhaupt funktionieren kann
float value = float.Parse("1a3.a2e", @"##x\.xxx"); //value == 419.63623046875
value += 5;
string hex = value.ToString(@"##x\.xxx"); //hex == "1a8.a2e"
Gruß, BhaaL
@ Programmierhans: 8o 8o
Funktioniert einwandfrei! Vielen dank für deine Mühe, einfach Klasse!
@ alle anderen: Das mit dem Split habe ich auch in erwägung gezogen,
jedoch habe ich die Idee aus dem von euch gennanten Grund verworfen
(bei Zahlen über 1000)
Euch allen vielen Dank!
Wünsche euch heute viel Spass beim Fussballschauen 🙂
👶-> :]-> 8o-> 🙂
Guten Tag zusammen,
ich stehe vor exakt dem selben Problem.
Muss eine fortlaufende ID anhand des aktuellen Datums und eines Counters in dem Format dd.mm.yyxxxx ausgeben.
Leider funktioniert folgender Code von Programmierhans bei mir nicht:
string source="1.00.000100"; source=(int.Parse(source.Replace(".",string.Empty))+1).ToString(@"#\.##\.######");
Hier mein Code:
string datetime = DateTime.Now.ToString("yyMMdd");
string count = @"0000";
DataColumn datacolumn = new DataColumn("ID_NEU");
dt.Columns.Add(datacolumn);
datacolumn.SetOrdinal(0);
for(int i = 0; i < rowcount; i++)
{
string id_neu = datetime + count;
dt.Rows[i][0] = id_neu;
count = (int.Parse(count)+1).ToString(@"####");
}
Das Problem: die Ausgabe des counts zeigt die führenden 0er nicht an. Es sollte ja 4-stellig sein, also 0001, 0002, .....0173. Leider kommt aber nur 0,1,....173 raus.
Hab aus dem Snippet von Programmierhans oben daraus geschlossen, dass man mit
.ToString(@"####");
so ne Art Platzhalter festlegen kann.
Dabei hab ich mich aber scheinbar getäuscht 🤔
Wo liegt mein Fehler? 🙂
Schonmal herzlichen Dank,
Andi
Du meine Güte, da hatte ich wohl n Brett vorm Kopf. =)
Danke für die schnelle Hilfe, JAck30lena! 👍