上一期:
C#格式化输出-CSDN博客
字符串插值
字符串插入功能,使得我们可以更直观地嵌入表达式到字符串中,只需要在字符串前加上$符号即可实现这一点。着中国方法不仅提高了代码的可读性,而且简化了字符串构造的过程。
使用Insert方法
当需要一个已有的字符串中插入新的子串时,可以使用String.Insert
方法;该方法接受两个参数:一是要插入的位置索引(从0开始),二是要插入的字符串内容。
string original = "20250113";
string withYear = original.Insert(4, "年");
Console.WriteLine(withYear); // 输出: 2025年0113
该例子中original.Insert
(4,“年”)将“年”插入到original
字符串的第5个字符之前(因为索引是从0开始的),从而得到一个新的字符串withYear
。
在这里需要注意在C#中的字符出啊是不可变的对象,因此每次调用Insert方法都会创建一个新的字符串实例,而不会修改原始字符串。如果频繁地对同一个字符串进行多次插入操作,可能会导致性能问题,这是可以考虑使用StringBuilder
类来优化。
内插字符串
内插字符串的基础
自C# 6.0起引入了字符串插值的功能,允许我们以更直观的方式将变量和表达式嵌入到字符串中。只需在字符串前加上 $
符号即可启用这种特性。
var name = "Alice";var greeting = $"Hello, {name}!";Console.WriteLine(greeting); // 输出: Hello, Alice!
这里,{name}
被视为一个占位符,它会被变量 name
的实际值所替代。除了简单的变量替换外,还可以直接在大括号内编写任何有效的C#表达式。
格式化选项
对于数值、日期时间等类型的数据,可以通过添加格式字符串来控制输出格式。这可以通过在表达式后紧跟冒号(:)
和格式说明符来实现。
var price = 56.67m;
Console.WriteLine($"The price is {price:C}."); // 输出: The price is $56.67.
这里的 {price:C}
表示将 price
变量按照货币格式输出,具体的表现形式会根据当前的文化设置自动调整。
对齐与字段宽度
有时我们希望控制输出文本的对齐方式或设置最小字段宽度,这时可以在表达式后使用逗号(,
)后面跟上一个整数表示宽度。正数表示右对齐,负数则代表左对齐。
Console.WriteLine($"|{"Left",-7}|{"Right",7}|");
这段代码创建了一个表格样式的输出,其中 "Left"
左对齐且占用7个字符的空间,而 "Right"
则右对齐同样占据7个字符的空间。这样的功能非常适合用于制表或者报告生成等场景。
内插原始字符串字面量
从C# 11开始,支持结合 $
和 @
符号创建内插原始字符串字面量,这意味着可以在多行字符串中使用字符串插值而不必担心转义序列的问题。
var pointMessage = $$"""
The point "{X}, {Y}" is {Math.Sqrt(X * X + Y * Y):F3} from the origin
""";
这里的 $$"""..."""
定义了一个跨越多行的字符串,其中 {X}
, {Y}
, 和 {Math.Sqrt(X * X + Y * Y):F3}
都会被相应的表达式值所替代。这种语法特别适合于处理HTML、SQL查询或者其他结构化文本的情况。
字符串插值总结:
无论是通过 Insert
方法进行字符串插入,还是利用字符串插值(内插字符串)来构建动态字符串,都是十分有用的技术。前者适用于在现有字符串的特定位置添加新内容,而后者则提供了更加灵活和易读的方式来构造包含变量及表达式的字符串。