开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C# 字符串格式

C#字符串格式教程展示了如何在C#中格式化字符串。我们使用string.FormatConsole.WriteLineStringBuilder.AppendFormat来格式化字符串。

复合格式允许我们在C#中格式化字符串。它由string.FormatConsole.WriteLineStringBuilder.AppendFormat等方法支持。方法将对象列表和复合格式字符串作为输入。格式字符串由固定字符串和一些格式项组成。这些格式项是索引占位符,对应于列表中的对象。

格式项的语法如下:

{index[,alignment][:formatString]}

index组件是必需的。它是一个从0开始的数字,表示对象列表中的一个项目。多个项目可以引用对象列表的同一个元素。如果某个对象未被格式项引用,则该对象将被忽略。如果我们在对象列表的范围之外引用,则会抛出运行时异常。

alignment组件是可选的。它是参数的字符串表示中的最少字符数。如果为正,则参数右对齐;如果为负,则为左对齐。如果指定,则必须用冒号分隔索引和长度。

formatString是可选的。它是一个以特定方式格式化值的字符串。它可用于格式化日期、时间、数字或枚举。

C#字符串格式化方法

在下面的示例中,我们使用string.FormatConsole.WriteLineStringBuilder.AppendFormat来格式化字符串。

using System.Text;

var msg = string.Format("There are {0} owls", 5);
Console.WriteLine(msg);

Console.WriteLine("There are {0} eagles", 3);

var builder = new StringBuilder();
builder.AppendFormat("There are {0} hawks", 4);
Console.WriteLine(builder);

该示例使用三种不同的方法格式化字符串。

$ dotnet run
There are 5 owls
There are 3 eagles
There are 4 hawks

C#字符串格式索引

在下面的例子中,我们格式化了三个字符串。

int oranges = 2;
int apples = 4;
int bananas = 3;

string str1 = "There are {0} oranges, {1} apples and {2} bananas";
string str2 = "There are {1} oranges, {2} bananas and {0} apples";

Console.WriteLine(str1, oranges, apples, bananas);
Console.WriteLine(str2, apples, oranges, bananas);

我们向控制台打印一条简单的消息。我们只使用格式项的索引组件。

string str1 = "There are {0} oranges, {1} apples and {2} bananas";

{0}{1}{2}是格式项。我们指定索引组件。其他组件是可选的。

Console.WriteLine(str1, oranges, apples, bananas);

现在我们将复合格式放在一起。我们有字符串和对象列表(橘子、苹果、香蕉)。{0}格式项指的是橘子。WriteLine方法将{0}格式项替换为oranges变量的内容。

string str2 = "There are {1} oranges, {2} bananas and {0} apples";

引用对象的格式项的顺序很重要。

$ dotnet run
There are 2 oranges, 4 apples and 3 bananas
There are 2 oranges, 3 bananas and 4 apples

C#字符串格式数字数据

下一个示例将格式化数字数据。

Console.WriteLine("{0}  {1, 12}", "Decimal", "Hexadecimal");

Console.WriteLine("{0:D}  {1,8:X}", 502, 546);
Console.WriteLine("{0:D}  {1,8:X}", 345, 765);
Console.WriteLine("{0:D}  {1,8:X}", 320, 654);
Console.WriteLine("{0:D}  {1,8:X}", 120, 834);
Console.WriteLine("{0:D}  {1,8:X}", 620, 454);

我们以十进制和十六进制格式打印数字。我们还使用长度组件对齐数字。

Console.WriteLine("{0:D}  {1,8:X}", 502, 546);

{0:D}格式项指定,所提供对象列表中的第一项将采用十进制格式并进行格式化。{1,8:X}格式项采用第二项。将其格式化为十六进制格式:X。字符串长度为8个字符8。因为数字只有三个字符,所以它右对齐并用空字符串填充。

$ dotnet run
Decimal   Hexadecimal
502       222
345       2FD
320       28E
120       342
620       1C6

以下示例展示了如何使用各种数字符号。

Console.WriteLine("Number: {0:N}", 127);
Console.WriteLine("Scientific: {0:E}", 127);
Console.WriteLine("Currency: {0:C}", 127);
Console.WriteLine("Percent: {0:P}", 127);
Console.WriteLine("Hexadecimal: {0:X}", 127);

该示例演示了数字的标准格式化说明符。数字126以五种不同的表示法打印:正常、科学、货币、百分比和十六进制。

$ dotnet run
Number: 127.00
Scientific: 1.270000E+002
Currency: $127.00
Percent: 12,700.00%
Hexadecimal: 7F

这是程序的输出。

C#字符串格式对齐

alignment(或长度)字段是要写入输出的最少字符数。如果我们使用{0,10},输出是右对齐的。对于左对齐,我们指定一个负长度字段:{0,-10}

Console.WriteLine(1);
Console.WriteLine(16);
Console.WriteLine(1655);
Console.WriteLine(16567);
Console.WriteLine(166701);

Console.WriteLine("{0,10}", 1);
Console.WriteLine("{0,10}", 16);
Console.WriteLine("{0,10}", 1655);
Console.WriteLine("{0,10}", 16567);
Console.WriteLine("{0,10}", 166701);

首先,我们在不指定字段长度的情况下打印五个数字。输出的长度等于显示的字符数。在第二种情况下,字段长度为10。五个输出中的每一个的最小长度为10个字符。数字右对齐。

$ dotnet run
1
16
1655
16567
166701
        1
        16
        1655
        16567
        166701

C#字符串格式日期和时间

下一个示例格式化日期和时间数据。

var now = DateTime.Now;

Console.WriteLine("Short date: {0:d}", now);
Console.WriteLine("Long date: {0:D}", now);
Console.WriteLine("Short time: {0:t}", now);
Console.WriteLine("Long time: {0:T}", now);
Console.WriteLine("Month: {0:M}", now);
Console.WriteLine("Year: {0:Y}", now);

代码示例显示了当前日期和时间的六种不同格式。

$ dotnet run
Short date: 10/24/2022
Long date: Monday, October 24, 2022
Short time: 10:40 AM
Long time: 10:40:18 AM
Month: October 24
Year: October 2022

在这篇文章中,我们在C#中格式化了字符串。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C# 字符串格式

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏