我要求根据格式字符串标识小数位数,例如#.00
应返回2
。
###,#. === > 0
###,#.00000 ===> 4
有没有更好的方法,只需循环遍历字符并检查它们的索引是否大于点并递增计数...
答案 0 :(得分:2)
如果您可以假设输入在小数点后只有零,则可以从IndexOf(“。”)中减去字符串的长度。
(str.Length - str.IndexOf('.') - 1)
否则,您必须在小数点后计算零。我个人使用LINQ语句。它不会再具有高性能,但看起来会更好。
str.SkipWhile(c => c != '.').Count(c => c == '0')
当然,还有其他一些警告。要提出“正确”的答案,您必须提供有关如何处理此类案例的更多信息:
(12345.4321).ToString("#.##") // 12345.43
(12345.4321).ToString("#.#####") // 12345.4321
(12345.4321).ToString("#.#####-0") // 12345.43210-0
那么你需要计算哈希值,因为它们可以导致出现额外的小数位,或者不计算它们,因为它们可能没有?
答案 1 :(得分:0)
好吧,您可以使用格式来格式化数字0,计算字符数并减去2。
答案 2 :(得分:0)
您可以使用LastIndexOf
,传递.
并使用带有字符串长度的结果。
return fmtString.Length - fmtString.LastIndexOf('.') - 1;
您应确保该字符串包含.
,否则LastIndexOf
将返回-1。