当前位置: 首页 > news >正文

C#格式化输出

上一期:

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 方法进行字符串插入,还是利用字符串插值(内插字符串)来构建动态字符串,都是十分有用的技术。前者适用于在现有字符串的特定位置添加新内容,而后者则提供了更加灵活和易读的方式来构造包含变量及表达式的字符串。

http://www.lryc.cn/news/520521.html

相关文章:

  • Open FPV VTX开源之默认MAVLink设置
  • 【初识扫盲】逆概率加权
  • Ubuntu中双击自动运行shell脚本
  • 理解AJAX与Axios:异步编程的世界
  • 分组通道自注意力G-CSA详解及代码复现
  • 汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)
  • 玩转大语言模型——langchain调用ollama视觉多模态语言模型
  • Github 2025-01-11 Rust开源项目日报 Top10
  • 【学习】【记录】【分享】微型响应系统
  • vue城市道路交通流量预测可视化系统
  • Windows7 Emacs设置及中文乱码解决
  • Python AI教程之十五:监督学习之决策树(6)高级算法C5.0决策树算法介绍
  • MOS管为什么会有夹断,夹断后为什么会有电流?该电流为什么是恒定的?
  • 网络安全-RSA非对称加密算法、数字签名
  • 【AI日记】25.01.13
  • Mysql--运维篇--空间管理(表空间,索引空间,临时表空间,二进制日志,数据归档等)
  • JVM面试相关
  • 【leetcode 13】哈希表 242.有效的字母异位词
  • Blazor开发复杂信息管理系统的优势
  • ue5 1.平A,两段连击蒙太奇。鼠标点一下,就放2段动画。2,动画混合即融合,边跑边挥剑,3,动画通知,动画到某一帧,把控制权交给蓝图。就执行蓝图节点
  • 2025,AI走向何方?暴雨技术专家为您展望
  • Threejs实现 区块链网络效应
  • 宁德时代C++后端开发面试题及参考答案
  • 【三维数域】三维数据调度-负载均衡和资源优化
  • Linux服务器网络丢包场景及解决办法
  • 【信息系统项目管理师】高分论文:论信息系统项目的采购管理(数据中台项目)
  • AI语音机器人大模型是什么?
  • 极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案
  • SparrowRTOS系列:链表版本内核
  • Elasticsearch—索引库操作(增删查改)