myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » [Gelöst] String aufteilen, Ziffern konvertieren und Werte ersetzen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[Gelöst] String aufteilen, Ziffern konvertieren und Werte ersetzen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
csharpente csharpente ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2018
Beiträge: 3


csharpente ist offline

[Gelöst] String aufteilen, Ziffern konvertieren und Werte ersetzen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Beschreibung:

Guten Abend,
ich bin wie viele andere auch ein Neuling und seit einiger Zeit dabei einen Code zu schreiben in dem eine Artikelnummer "Beispiel:55141159007955" in verschiedene Strings zu teilen und durch andere Werte zu ersetzen bzw. andere Ziffern zu konvertieren.
Die ersten vier Ziffern sind irrelevant, da diese nur abgeglichen und ersetzt werden (Was bereits funktioniert), die Ziffern 5-8 und 9-12 sind Werte für den Aussendurchmesser und Innendurchmesser. Diese sollen aber nicht wie im Beispiel "1159" und "0079", sondern "11,59" und "0,79" ausgegeben werden, bzw. andere als"22,25" und "1,89".

Und nun zu meinem Problem.
Leider habe ich bisher keine Möglichkeit gefunden an der 3. Position von hinten ein Komma zu setzen und ggf. eine Null vor dem Komma, da die Nullen beim Convert verloren gehen.
Alle Werte werden an ein label ausgegeben und stellen Millimeter-Werte da.

C#-Code:
            String ArtikelAD = tbxartikel.Text;
            int startIndexAD = 4;
            int lengthAD = 4;
            String substringAD = ArtikelAD.Substring(startIndexAD, lengthAD);

            double AD;
            AD = Convert.ToDouble(substringAD);
            tbxad.Text = "" + AD;
            String ArtikelID = tbxartikel.Text;

            int startIndexID = 8;
            int lengthID = 4;
            String substringID = ArtikelID.Substring(startIndexID, lengthID);
            double ID;
            ID = Convert.ToDouble(substringID);
            tbxid.Text = "" + ID;

            double wert;
            wert = AD - ID;
            tbxws.Text = "" + wert /2;

Schlagwörter: <Bitte Schlagwörter, unter denen dein Snippet über die Suche gefunden werden soll, hier eintragen>

Kann mir jemand behilflich sein?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von csharpente am 19.11.2018 19:55.

Neuer Beitrag 18.11.2018 18:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Papst Papst ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.09.2014
Beiträge: 299
Entwicklungsumgebung: VS2017
Herkunft: Kassel


Papst ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

wenn du den Wert bereits als double hast, kannst du ihn einfach teilen. Das was du da hast ist ein Fix-Komma-Wert, also ein Wert der an einer bestimmten Stelle ein Komma hat, das aber nur per Definition dort ist:

1159.0 / 100 = 11.59

Was du auf jeden Fall beachten solltest ist, dass du ggf. einmal andere Werte als die erwartenden Zahlen in deinen Algorithmus bekommst, das solltest du abfangen (Was z.B., wenn dir jemand keine Zahlen sondern Buchstaben gibt).
Dafür bietet sich die Methode double.TryParse an.

P.S.: Wenn du die Wahl hast, ich würde keine Daten in die Nummern hineinkodieren, sondern diese separat in einer Datenbank pflegen. Spätestens, wenn sich mal etwas ändert musst du dann dein System nicht anpassen und weitere Parser erstellen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Papst am 18.11.2018 19:13.

Neuer Beitrag 18.11.2018 19:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
csharpente csharpente ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2018
Beiträge: 3

Themenstarter Thema begonnen von csharpente

csharpente ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ach Gott,
manchmal ist es einfach zu simpel.

Hat natürlich auf anhieb geklappt. Danke sehr!!

Das einzige was aber noch stört ist, dass wenn ich folgende Nummer habe:
"44881905159055"

Dabei wird aus 1590 ->> 15,9 kann man es noch bewerkstelligen, dass die Null hinter dem 15,9 stehen bleibt?


Die Idee mit der Datenbank ist mit sicherheit vorteilhaft, aber im Moment noch nicht zu bewerkstelligen.
Das wird aber noch kommen.
Neuer Beitrag 18.11.2018 19:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.185
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von csharpente:
Dabei wird aus 1590 ->> 15,9 kann man es noch bewerkstelligen, dass die Null hinter dem 15,9 stehen bleibt?

Einfacher, schneller Blick in die Doku:  Benutzerdefinierte Zahlenformatzeichenfolgen
Neuer Beitrag 18.11.2018 20:40 Beiträge des Benutzers | zu Buddylist hinzufügen
csharpente csharpente ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2018
Beiträge: 3

Themenstarter Thema begonnen von csharpente

csharpente ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke sehr,
hab es mit dem Link direkt gelöst bekommen.

Für alle die es interessiert, es fehlte die passende Formatierung.

String.Format("{0:0.00}", Deine Zahl/ Dein Wert).Replace(".", ",");

Das Replace bedeutet, das die Punkte durch komma ersetzt werden.
Neuer Beitrag 19.11.2018 19:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.185
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Der Replace ist Käse. Schau dir die Culture Info an - dafür ist sie da.
Wird auch im Link erklärt.
Neuer Beitrag 19.11.2018 21:55 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.09.2020 08:58