2

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

myLabel.Text = myClass.getNumberOfFiles();
4

3 回答 3

7

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

myLabel.Text = int.Parse(myClass.getNumberOfFiles()).ToString("#,##0");
于 2012-10-11T21:57:23.787 回答
5

我怀疑您想要标准的“数字”格式说明符,精度为 0:

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

这是您将getNumberOfFiles()方法固定为GetNumberOfFiles()(命名约定)并使其返回intlong(用于获取数字的方法不应返回字符串)之后。

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

于 2012-10-11T21:57:37.313 回答
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 实例都有每个命名格式的实现,但是它不可能有自定义格式说明符的实现。

于 2012-10-11T22:07:42.603 回答