現在,我正在使用Winforms(C#)的RPN計算器。例如,我可以在標籤中存儲「1/2」等分數。所以當我的標籤包含幾個分數時,我想先將它們轉換成十進制數,以便將它們放到我的堆棧中。下面你可以找到我的方法,我想怎麼做。然而,當我在我的標籤中例如「1/2」和「6/3」時,對於這兩個值,我都會得到「2」和「2」而不是「0.5」和「2」。C#:正則表達式替換後匹配
任何想法如何解決這個問題?
非常感謝提前!
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);
}
你需要做更多的'foreach'循環中。如果你只是設置分子和分母,那麼在循環之後,你只需得到兩者的最後一個值(即你的6/3 = 2)。 –
我會的,謝謝! –