Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将字符串转换为ToString(“0”)格式_C# - Fatal编程技术网

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

C# 如何将字符串转换为ToString(“0”)格式,c#,C#,在我的应用程序中,我正在用我的标签更新我的用户界面,我希望以#,##0格式显示数字。 myClass.getNumberOfFiles返回字符串 myLabel.Text = myClass.getNumberOfFiles(); 假设getNumberOfFiles返回一个字符串(根据其名称,它不应该返回): 我怀疑您想要的是精度为0的: label.Text = GetNumberOfFiles().ToString("N0"); 这是在您将getNumberOfFiles()方法固定为

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

myLabel.Text = myClass.getNumberOfFiles();

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

我怀疑您想要的是精度为0的:

label.Text = GetNumberOfFiles().ToString("N0");
这是在您将
getNumberOfFiles()
方法固定为
getNumberOfFiles()
(命名约定)并使其返回
int
long
(用于获取数字的方法不应返回字符串)之后发生的

这将为当前区域性使用适当的分组;如果需要不同的区域性,可以将其指定为第二个参数

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实例都有每个命名格式的实现,但是它不可能有自定义格式说明符的实现。

为什么返回数字的方法会使用字符串类型?在该级别进行修复。在任何情况下,他都必须将数字类型转换为一行中的字符串,以便对其进行格式化。我猜您希望添加一个千分位分隔符。如果是,请参阅以下问题:错误4参数1:无法从“字符串”转换为“System.IFormatProvider”c@user1710944:您是否阅读了我说过您需要首先修复返回
int
long
的方法的那一位?你到底为什么想要一个名为
GetNumberOfFiles
的方法来返回字符串?小小的旁注:
“#,##0”
也能正确地处理数以百万计和数万亿计的数据。@HenkHolterman:天哪,很有趣,坦率地说有些出乎意料。看起来你实际上只需要
“#,0”
就可以逃脱。是的,额外的
##
是为了可读性。按3分组是硬代码。非常感谢。这是一个很好的答案。
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);
}