RegEx:从DisplayFormat字符串中获取小数位数

时间:2012-12-17 13:48:51

标签: .net regex

任何人都可以帮助创建一个正则表达式来处理这个sutuation。 数值的显示格式字符串可以采用以下格式 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 - What would be a good way of determining number of decimal places from a format string?identify the number of decimal places based on the format string

1 个答案:

答案 0 :(得分: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;
        }