gpt4 book ai didi

c# - 解释令人困惑的条件字符串格式

转载 作者:bug小助手 更新时间:2023-10-28 10:49:34 25 4
gpt4 key购买 nike

一位前同事写道:

String.Format("{0:#;;} {1:records;no records;record}", rows, rows - 1);
//Rows is a integer value

我读过这样的文章

Code Project - Custom String Formatting in .NET
MSDN - Custom Numeric Format Strings

但我仍然不明白这种格式是如何工作的。显然我可以看到输出,但我不明白这部分 {0:#;;} 和第二部分。我想为指定年龄(年,年...)做同样的事情

我对这种字符串格式很好奇。有人可以解释这种行为吗?作者不再与我们合作。

最佳答案

这是 custom numeric format string ,基本上 - 但说实话,这很奇怪。其实就是两个:

#;;
records;no records;record

在每种情况下,您都有三个部分,因为有两个 section separators (分号):

The first section applies to positive values, the second section applies to negative values, and the third section applies to zeros.

开发人员使用 rows - 1 作为要由第二个格式字符串格式化的值,使您的情况更加复杂,所以它真的是:​​

  • records 如果 rows 大于 1(所以 rows - 1 为正数)
  • no records 如果 rows 等于 0(所以 rows - 1 为负数)
  • record 如果 rows 等于 1(所以 rows - 1 为零)

并且第一个格式字符串only包含rows的值(由于#)如果rows是积极的。所以总体结果是:

Rows     Result
2 2 records (ditto for other values greater than 1)
1 1 record
0 no records

就我个人而言,我要么为此使用条件运算符,要么使用 if/else 语句 - 使用自定义数字格式字符串在最糟糕的情况下是“聪明的”......

关于c# - 解释令人困惑的条件字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com