Momentan arbeite ich an einem RPN-Rechner mit Winforms (C#). Ich kann Brüche wie "1/2" zum Beispiel in einem Etikett speichern. Wenn also mein Label mehrere Brüche enthält, möchte ich sie zuerst in Dezimalzahlen umwandeln, damit sie auf meinen Stapel gelegt werden. Im Folgenden finden Sie meine Methode, wie ich es machen möchte. Wenn ich zum Beispiel "1/2" und "6/3" in meinem Label habe, bekomme ich für beide Werte "2" und "2" anstelle von "0.5" und "2".C#: Regex Ersetzen Übereinstimmungen nach der Konvertierung
Irgendwelche Ideen, um das zu lösen?
Vielen Dank im Voraus!
private void SearchforFrac()
{
string pattern = @"(\d+)(/)(\d+)";
decimal new1 = 0;
int numerator = 0;
int denominator = 1;
foreach (Match match in Regex.Matches(labelCurrentOperation.Text, pattern, RegexOptions.IgnoreCase))
{
numerator = int.Parse(match.Groups[1].Value);
denominator = int.Parse(match.Groups[3].Value);
}
new1 = (decimal)numerator/(decimal)denominator;
String res = Convert.ToString(new1);
Regex rgx = new Regex(pattern);
labelCurrentOperation.Text = rgx.Replace(labelCurrentOperation.Text, res);
}
Sie benötigen mehr in der 'foreach' Schleife zu tun. Wenn Sie nur den Zähler und den Nenner setzen, erhalten Sie nach der Schleife nur den letzten Wert von beiden (d. H. Ihre 6/3 = 2). –
Ich werde, danke! –