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



有人能帮助创建一个正则表达式来处理这个问题吗。数字值有一个显示格式字符串,可以采用以下格式positive_value_format;negative_value_format。正格式和负格式可以是例如'#,##0.00;(#,###0.0000)'或'#,###0;(#,###0.0)'或"#,###0"-这意味着一个正值应在点后显示两位数字,另一个则不显示数字。

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

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

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

这适用于提供的所有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;
}

最新更新