常用的C#字符串输出格式
近段时间在做项目时用到了字符串输出格式方面的内容,今天来整理一下,算是笔记吧,如果能帮到部分网友我也是很开心哒。
字符串组合输出
1、大部分开发者会选用加号键组合字符串并输出:
string str = "Hello";
string name="Jerry";
string result = str + " " + name;
输出结果:
2、我们还可以选用格式化输出的方式来灵活的组合字符串并将其输出:即:我们先定义整个字符串的格式,然后把参数像填空一样,填写完善,最后输出;C#中我们可以选用string.Format方法来进行字符串的格式化。
string str = "Hello";
string name="Jerry !";
string result = string.Format("Hello {0}", name);
如示例所示:“{0}”将被name的值所代替,输出结果如下;
string str = "Hello";
string name="Jerry !";
string result = string.Format("{0} {1}", str,name);
输出结果与上面相同:
【注意】,{n}应该算是定义格式化字符串的占位符,n表示后续参数的位置,n从0开始,如果n超出后续参数个数,则会报错;{0}对应数组第一个值,即对应上述示例中的str变量,{1}对应数组第二个值,对应上述示例中的name变量;
下面示例一个错误案例:
string str = "Hello";
string name="Jerry !";
string result = string.Format("{0} {1}", str);
出现这个错误的原因是后面的变量只有一个,但是{1}确需要输出第二个参数,不存在第二个参数。
3、想要运用string.Format方法输出“{}”的方法请参考示例:
string str = "Hello";
string name="Jerry !";
string result = string.Format("{0} {{}} {1}", str);
输出结果 即“{{}}”代表“{}”:
4、【不常用】标准的数学格式字符串用于返回通常使用的字符串。它们通常象X0这样的格式。X是格式化标识符,0是精度标识符。格式标识符号共有9种,它们代表了大多数常用的数字格式。就像下表所示:
字母 | 含义 |
---|---|
C或c | Currency 货币格式 |
D或d | Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了) |
E或e | Exponent 指数格式 |
F或f | Fixed point 固定精度格式 |
G或g | General 常用格式 |
N或n | 用逗号分割千位的数字,比如1234将会被变成1,234 |
P或p | Percentage 百分符号格式 |
R或r | Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字 |
X或x | Hex 16进制格式 |
如果我们使用下面的表达方式,让我们看看会发生什么
int i = 123456;
Console.WriteLine("{0:C}", i); // ¥123,456.00
Console.WriteLine("{0:D}", i); // 123456
Console.WriteLine("{0:E}", i); // 1.234560E+005
Console.WriteLine("{0:F}", i); // 123456.00
Console.WriteLine("{0:G}", i); // 123456
Console.WriteLine("{0:N}", i); // 123,456.00
Console.WriteLine("{0:P}", i); // 12,345,600.00 %
Console.WriteLine("{0:X}", i); // 1E240
public class FormatSpecApp
{
public static void Main(string[] args)
{
int i = 123456;
Console.WriteLine("{0:C}", i); // ¥123,456.00
Console.WriteLine("{0:D}", i); // 123456
Console.WriteLine("{0:E}", i); // 1.234560E+005
Console.WriteLine("{0:F}", i); // 123456.00
Console.WriteLine("{0:G}", i); // 123456
Console.WriteLine("{0:N}", i); // 123,456.00
Console.WriteLine("{0:P}", i); // 12,345,600.00 %
Console.WriteLine("{0:X}", i); // 1E240
}
}
精度控制标识控制了有效数字的个数或者十进制数小数的位数。
Console.WriteLine("{0:C5}", i); // ¥123,456.00
Console.WriteLine("{0:D5}", i); // 123456
Console.WriteLine("{0:E5}", i); // 1.23456E+005
Console.WriteLine("{0:F5}", i); // 123456.00000
Console.WriteLine("{0:G5}", i); // 1.23456E5
Console.WriteLine("{0:N5}", i); // 123,456.00000
Console.WriteLine("{0:P5}", i); // 12,345,600.00000 %
Console.WriteLine("{0:X5}", i); // 1E240
5、用于日期时间的格式规范
示例代码:
DateTime date = DateTime.Now;
Console.WriteLine(string.Format("{0:D}", date));
输出:2020年9月15日