如何将字符串转换为ToString(“#,## 0”)格式

时间:2012-10-11 21:53:47

标签: c#

在我的应用程序中,我用我的标签更新了我的ui,我希望以#,## 0格式显示数字。 myClass.getNumberOfFiles返回字符串。

myLabel.Text = myClass.getNumberOfFiles();

3 个答案:

答案 0 :(得分:6)

假设getNumberOfFiles返回一个字符串(按名称,它不应该返回):

myLabel.Text = int.Parse(myClass.getNumberOfFiles()).ToString("#,##0");

答案 1 :(得分:5)

我怀疑你想要standard "numeric" format specifier,精度为0:

label.Text = GetNumberOfFiles().ToString("N0");

这是 后,您已将getNumberOfFiles()方法修改为GetNumberOfFiles()(命名惯例),并使其返回int或{{1 (一个用于获取数字的方法不应该返回字符串)。

这将使用适合当前文化的分组;如果你想要一个不同的文化,你可以将它指定为第二个参数。

答案 2 :(得分:4)

int files;
if (int.TryParse(myClass.getNumberOfFiles(), out files)) {
    myLabel.Text = files.ToString("N0");
}

如果您认为我的数字格式有任何格式,这将无效。但是,如果在返回getNumberOfFiles()时有人将int转换为字符串,它将起作用。如果getNumberOfFiles()返回格式化字符串,则需要执行一些不同的操作。下面假设格式是以en-US格式进入,并且您希望以巴西葡萄牙语显示它。它以详细的方式显示,因此您知道如果需要,如何插入其他文化。如果它的格式化并且不需要在不同文化之间进行更改,我不知道为什么你不能直接将getNumberOfFiles()的返回值分配给标签的Text属性。

int files;
var incomingCulture = CultureInfo.CreateSpecificCulture("en-US");
var outgoingCulture = CultureInfo.CreateSpecificCulture("pt-BR");
if (int.TryParse(myClass.getNumberOfFiles(), NumberStyles.Number, incomingCulture, out files)) {
    myLabel.Text = files.ToString("N0", outgoingCulture);
}

话虽如此,我同意所有其他人的观点,认为返回整数字符串是荒谬的。但我知道有时候你没有能够改变它的奢侈。

我还要指出,如果你使用像“N0”这样的命名格式说明符,有一天,一个程序员来到你身后,当他们必须全局化你的代码时,他们会在心里祝福你。这是因为每个CultureInfo实例都有一个针对每种命名格式的实现,但是它不可能有自定义格式说明符的实现。

相关问题