在 C# 中使用自定义千位分隔符
在显示字符串时,我尝试不使用“,”字符作为千位分隔符,而是使用空格。 我想我需要定义一种自定义文化,但我似乎做得不对。 有什么指点吗?
例如:将 1000000 显示为 1 000 000 而不是 1,000,000
(不,String.Replace()
不是我想使用的解决方案:P)
I'm trying not to use the ',' char as a thousand separator when displaying a string, but to use a space instead. I guess I need to define a custom culture, but I don't seem to get it right. Any pointers?
eg: display 1000000 as 1 000 000 instead of 1,000,000
(no, String.Replace()
is not the solution I'd like to use :P)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
创建您自己的 NumberFormatInfo (派生) 具有不同的千位分隔符。
Create your own NumberFormatInfo (derivative) with a different thousand separator.
Jon Skeet one 有一个稍微简单的版本:
并且可以跳过“nfi”初始化并将其直接作为参数放入 ToString() 方法中。
There's a slightly simpler version of Jon Skeet one :
And the 'nfi' initialization could be skipped and put directly as parameter into the ToString() method.
最简单的方法...
Easiest way...
我想要
此代码解决了这个问题:
以下是不同数字的行为示例:
I wanted to
This code solves it:
Here are examples of how this behaves for various numbers:
我建议您找到一个
NumberFormatInfo
最接近您想要的内容(即它与千位分隔符分开),请调用Clone()
,然后设置NumberGroupSeparator
属性。 (如果要使用货币格式设置数字格式,则需要更改CurrencyGroupSeparator
代替/以及。)使用它作为调用string.Format
等的格式信息,你应该没问题。 例如:I suggest you find a
NumberFormatInfo
which most closely matches what you want (i.e. it's right apart from the thousands separator), callClone()
on it and then set theNumberGroupSeparator
property. (If you're going to format the numbers using currency formats, you need to changeCurrencyGroupSeparator
instead/as well.) Use that as the format info for your calls tostring.Format
etc, and you should be fine. For example: