0

任何人都可以帮助创建一个正则表达式来处理这种情况。数值有一个显示格式字符串,可以是以下格式:positive_value_format;negative_value_format。正负格式可以是例如 '#,##0.00;(#,##0.0000)' 或 '#,##0;(#,##0.0)' 或 '#,##0' - 这意味着一个正值应该在点后显示 2 个数字,另一个 - 没有数字。

所以我需要创建正则表达式来处理这 3 种情况,正和/或负值的小数位数是多少。

'#,##0.00;(#,##0.0000)' -> 2, 4
'#,##0;(#,##0.0)' -> 0, 1
'#,##0' -> 0

我发现了以下问题,但它们没有得到回答或使用解析字符串而不是 RegExp -从格式字符串中确定小数位数的好方法是什么?,根据格式字符串识别小数位数

4

1 回答 1

0

这适用于所有 3 个提供的字符串

        string pat = "#,##([0-9]([0-9.]*?|$))($|;[(]#,##[0-9]([0-9.]*?)[)])";
        Match m = Regex.Match(input, pat);

        int lengthA = m.Result("$2").Replace(".", "").Length;
        if (!String.IsNullOrWhiteSpace(m.Result("$4")))
        {
            int lengthB = m.Result("$4").Replace(".", "").Length;
        }
于 2012-12-17T15:22:20.533 回答