Entwickler-Ecke
Sonstiges (.NET) - Finde Beträge in String
stony007_de - Fr 12.08.16 10:03
Titel: Finde Beträge in String
Moin
ich bin an einem Projekt zur Erkennung von Rechnungen etc. und stehe nun vor der Aufgabe, aus dem ausgelesenen String (in welchem sich einweder der Brutto / Netto oder MwSt. Betrag befindet) die Zahl heraus zu filtern. Wichtig hierbei ich habe in den meisten Fällen den
. (<-- Punkt) als tausender Trennung und das
, (<-- Komma) als Trennung für Nachkomma Stelle.
Ich habe schon ein wenig mit folgendem herum gebastelt :
C#-Quelltext
1:
| Regex regexpattern = new Regex(@"(([0-9)]\,*)([0-9)]\.*)*[0-9])"); |
das funktioniert auch solang bis die Zahl in summe nicht > 9.999,99 ist.
Beispiel:
Gefundener String: --->
Ergebnis
Bruttosumme 9.943,90€ -------> 9.943,90
Gefundener String: --->
Ergebnis
Bruttosumme 14.543,99€ -------> 543,99
versteh ich nicht ganz warum er das so tun. Hat jemand vielleicht eine bessere Idee für mich?
GeraldVonRiva - Fr 12.08.16 11:15
schau dir nochmal deinen Regexausdruck genau an.
C#-Quelltext
1:
| new Regex(@"(([0-9)]\,*)([0-9)]\.*)*[0-9])"); |
du erlaubst dort nur eine Zahl zwischen 0-9 vor dem . versuche mal so [0-9)]+\.*
mfg
Gerald
stony007_de - Fr 12.08.16 11:22
das sieht sehr gut aus!
vielen dank
GeraldVonRiva - Fr 12.08.16 11:28
Aber dein Regex für eine Suche nach Werten sieht für mich etwas komisch aus.
Schau dir mal den unteren an.
C#-Quelltext
1:
| Regex regexpattern = new Regex(@"[0-9\.]*,[0-9]*"); |
Dieser Regex erlaubt dann aber auch Zahlenwerte wie 1.22,9977.
stony007_de - Fr 12.08.16 11:31
Dad ist mein erster Versuch mit regex. Ich bin mit der syntax noch nicht ganz auf Freundschaft.
Mit deinem Beispiel sollte es korrekt sein?
GeraldVonRiva - Fr 12.08.16 11:43
Dieser Regex findet alle Zahlen und Punkte, solange bis ein Komma kommt. Einen Wert 1.222 ohne Komma findet er nicht. Außerdem findet der Ausdruck auch Werte wie 1.22.2,99999. Als Grundgerüst kannst du ihn erstmal verwenden. Wahrscheinlich wirst ihn mit der Zeit noch etwas verfeinern.
Es gibt auch ganz gut Webseiten wo du deinen Regex testen kannst. Einfach mal eine bekannte Suchmaschine dafür nutzen.
Palladin007 - Fr 12.08.16 12:44
Ein Beispiel einer solchen Website:
https://regex101.com/r/iU0qI4/7
Nutze ich persönlich sehr gerne.
Hab ein Pattern, wie ich es nutzen würde, und ein paar Beispiele rein geschrieben.
Es hat vorne ein \s (Leerzeichen) und hinten das €-Zeichen drin um Anfang und Ende der Zahl zu kennzeichnen.
Wenn andere Zeichen besser sind, einfach einfügen.
Die Kennzeichnung muss aber sein, da er sonst Zahlen in mitten einer invaliden Zahl "erkennen" würde. Wie das aussehen würde, siehst Du, wenn Du die Zeichen einfach weg nimmst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!