任何人都可以帮助创建一个正则表达式来处理这个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
答案 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;
}