C#字符串格式教程展示了如何在C#中格式化字符串。我们使用string.Format
、Console.WriteLine
和StringBuilder.AppendFormat
来格式化字符串。
复合格式允许我们在C#中格式化字符串。它由string.Format
、Console.WriteLine
或StringBuilder.AppendFormat
等方法支持。方法将对象列表和复合格式字符串作为输入。格式字符串由固定字符串和一些格式项组成。这些格式项是索引占位符,对应于列表中的对象。
格式项的语法如下:
{index[,alignment][:formatString]}
index
组件是必需的。它是一个从0开始的数字,表示对象列表中的一个项目。多个项目可以引用对象列表的同一个元素。如果某个对象未被格式项引用,则该对象将被忽略。如果我们在对象列表的范围之外引用,则会抛出运行时异常。
alignment
组件是可选的。它是参数的字符串表示中的最少字符数。如果为正,则参数右对齐;如果为负,则为左对齐。如果指定,则必须用冒号分隔索引和长度。
formatString
是可选的。它是一个以特定方式格式化值的字符串。它可用于格式化日期、时间、数字或枚举。
C#字符串格式化方法
在下面的示例中,我们使用string.Format
、Console.WriteLine
和StringBuilder.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#教程。