首页 > 编程语言 >C#格式化输出

C#格式化输出

时间:2025-01-13 20:32:39浏览次数:3  
标签:输出 格式化 C# 说明符 ToString WriteLine 格式 Console

上两期:

C#格式化输出-CSDN博客

C#格式化输出-CSDN博客

Console.WriteLine和Console.Write

Console.WriteLineConsole.Write 是两个用于向控制台输出信息的方法,它们都属于 System.Console 类。尽管这两个方法的功能相似,但它们之间存在一些关键的区别,这些区别影响了它们的使用场景和行为。

Console.WriteLine方法:

Console.WriteLine方法用于将指定的数据(字符串和数值或其他对象)及其后的唤醒符写入到控制台窗口,这意味着每次在调用Console.WriteLine之后,光标会自动移到到下一行的开始位置,为接下来的输出准备好所需空间。因此当需要连续调用Console.Writeline方式时,每一行输出都会出现在新的一行上面。

Console.Write方法:

Console.Write方法同样可以接受各种类型的参数,并将它们转换长字符串后输出到控制台,但时它不会再输出结束之后添加换行符。如需要换行就必须手动添加换行符(\r\n)。

格式化输出

除了基本的输出功能外,Console.WriteLineConsole.Write 都支持通过复合格式字符串来进行复杂的格式化操作。您可以指定占位符 {} 来表示待插入的参数,并且可以在大括号内定义格式化选项,如对齐方式、宽度限制以及特定类型的格式化模式。

double value = 123.456;
Console.WriteLine("Formatted number: {0:N2}", value); // 输出带两位小数的数字
Console.Write("Left aligned: {0,-10} | Right aligned: {1,10}\n", "left", "right");

性能考虑

理论上讲,由于 Console.WriteLine 每次调用时都需要处理换行符,因此它可能会比 Console.Write 略微消耗更多的资源。然而,在大多数实际应用中,这种差异是可以忽略不计的,除非是在极端情况下频繁调用这些方法。因此,选择哪个方法更多取决于具体的输出需求而非性能考量。

结论

Console.WriteLineConsole.Write 的主要区别在于是否自动添加换行符以及它们各自适用的不同输出场景。

标准与自定义是说明符

对于数字类型可以使用多种标准格式说明回复来改变其显示形式,如货币(c)、科学计数法(E)、固定点(F)等;而对于日期时间类型,则有短时期(d)、长日期(D)等不同格式;还可以通过自定义格式字符串来满足更为复杂的需要:

  • 数字格式化:

    • 货币:2.5.ToString("C") 结果为 2.50

    • 十进制数:25.ToString("D5") 结果为 00025

    • 科学型:25000.ToString("E") 结果为 2.500000E+005

    • 固定点:25.ToString("F2") 结果为 25.00

    • 常规:2.5.ToString("G") 结果为 2.5

    • 数字:2500000.ToString("N") 结果为 2,500,000.00

    • 十六进制:255.ToString("X") 结果为 FF

  • 日期时间格式化:

    • 短日期:DateTime.Now.ToString("d")

    • 长日期:DateTime.Now.ToString("D")

    • 完整日期和时间:DateTime.Now.ToString("f")

    • RFC1123 日期字符串:DateTime.Now.ToString("r")

    • 可排序日期字符串:DateTime.Now.ToString("s")

标准格式说明符

标准格式说明符时由单个字母字符组成的简单字符串,用于指定常见的数值或日期时间格式。例如:“c”表示货币格式,“D”表示十进制整数格式,而“F”则表示固定点数格式。

每种说明符都有其默认的行为,并且可以根据据需要通过附加精度说明符来调整。

double value = 1234.5678;
Console.WriteLine(value.ToString("C")); // 货币格式,默认为当前文化设置下的货币符号
Console.WriteLine(value.ToString("F2")); // 固定点数格式,保留两位小数

这里展示了如何利用标准格式说明符快速地将数值转换成符合预期格式的字符串表示形式。对于日期时间类型的数据,也有类似的标准格式说明符,如 "d" 表示短日期模式,"t" 表示短时间模式等。

自定义格式说明符

当标准格式说明符无法满足特定需要时,我们将可以选择创建自定义格式说明符;自定义说明符允许更加精细地控制输出格式,包括但不限于数字占位符("0"和"#")、分隔符("."和",")、百分比符号("%")以及其他特殊符号,因此,还可以定义多个部分以分别处理正数、负数和零值的不用显示规则。

符号描述
"0"作为零占位符,即使没有对应的数字也会显示零。
"#"仅当由实际数字时才会显示,否则为空。
"."用于设置小数点的位置。
","既可以作为分割符也可以用来缩放数值。
"%"将数值乘以100并添加百分号。
"‰"将数值乘以1000并添加千分号
多部分格式

可以使用分号 ";" 来分隔不同的格式部分,以便根据数值的正负性选择适当的格式化方式。

string format = "#,##0.00;(#,##0.00);-";
Console.WriteLine((-1234.56).ToString(format)); // 输出: (1,234.56)

例子中,第一部分用于正数,第二部分用于负数(带括号),第三部分则专门针对零值。

实现自定义格式提供程序

如果现有的标准和自定义格式说明符依然不能覆盖现有问题,则可以通过实现IFormatProviderICustomFormatter接口来自动红衣整个格式化过程。

public class CustomNumberFormatter : IFormatProvider, ICustomFormatter {
    public object GetFormat(Type formatType) {
        if (formatType == typeof(ICustomFormatter))
            return this;
        else
            return null;
    }

    public string Format(string format, object arg, IFormatProvider formatProvider) {
        // 实现具体的格式化逻辑...
        return "formatted string";
    }
}

通过这种方式,不仅可以扩展 C# 内置的格式化能力,还能够确保应用程序中的数据始终按照一致且正确的格式呈现给用户。

标签:输出,格式化,C#,说明符,ToString,WriteLine,格式,Console
From: https://blog.csdn.net/C6666888/article/details/145122820

相关文章

  • LeetCode Top Interview 150 - Stack
    Somescenarioswhereastackistypicallytheappropriatedatastructuretouse:1.ParenthesesMatching:Problemsthatrequirecheckingforbalancedparenthesesorbracketsoftenutilizestackstoensurethateveryopeningbrackethasacorrespondingclo......
  • C#上位机通过CAN总线发送bin文件
    让gpt生成一段代码用来把bin文件通过can总线发出去c#代码还是比较强大的,各种功能基本都是一两行代码就实现了,这里记录一下对这个代码的理解和解读主要代码如下,传入bin文件的地址即可将其从指定的can通道发送出去:publicvoidSendBINFile(stringbinFilePath){if(!File.......
  • 数据分析-使用Excel透视图/表分析禅道数据
    背景禅道,是目前国内用得比较多的研发项目管理系统,我们常常会用它进行需求管理,缺陷跟踪,甚至软件全流程的管理,如果能将平台上的数据结公司的实际情况进行合理的分析利用,相信会给我们的项目复盘总结带来比较高的价值。结果预览在写这篇文章时,突然想到可能会有人问:禅道已提......
  • React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次
    基础概念Element对象与Fiber对象Element对象与Fiber对象Element对象定义React的Element对象是一个描述用户界面(UI)的普通JavaScript对象,通常由React.createElement或JSX语法生成。作用它是React应用中的一种描述UI的不可变数据结构。表示一个虚拟DOM......
  • OpenCV机器视觉:主色提取的奇妙之旅
    ###C#OpenCV机器视觉:主色提取的奇妙之旅在当今这个充满数字化与自动化的时代,机器视觉技术正以前所未有的速度改变着我们的生活和生产方式。作为机器视觉领域的佼佼者,OpenCV以其强大的功能和开源的特性,成为了众多开发者心中的“瑞士军刀”。今天,我们将踏上一场奇妙的旅程,探索......
  • 高阶C语言|探索指针的根源之目(进阶指针)
    文章目录前言1.字符指针(`char*`)1.1字符串常量与指针1.2字符指针的使用2.数组指针与指针数组2.1指针数组2.2数组指针3.数组与指针传参3.1一维数组传参3.2二维数组传参4.函数指针(`functionpointer`)4.1函数指针的基本用法4.2使用函数指针数组5.指向函数指......
  • 材料力学仿真软件:Calculix_(3).几何建模与网格划分
    几何建模与网格划分几何建模几何建模的基本概念在材料力学仿真软件中,几何建模是仿真分析的第一步。几何建模是指通过计算机辅助设计(CAD)软件或直接在仿真软件中创建物理模型的几何形状。这些几何形状可以是简单的二维或三维图形,也可以是复杂的结构模型。几何建模的目的是......
  • 材料力学仿真软件:Calculix_(4).边界条件与载荷应用
    边界条件与载荷应用在材料力学仿真软件Calculix中,边界条件和载荷的正确应用是确保仿真结果准确性和可靠性的关键步骤。边界条件定义了模型在特定位置的行为,而载荷则定义了作用于模型上的外力或能量。本节将详细介绍如何在Calculix中设置和应用边界条件与载荷,包括静态载荷、......
  • 材料力学仿真软件:Calculix_(10).热力学耦合分析
    热力学耦合分析1.热力学耦合分析概述热力学耦合分析是指在材料力学仿真过程中,考虑材料的温度变化对力学性能的影响。这种耦合分析在许多工程应用中非常关键,特别是在涉及高温、热处理、热应力等问题时。Calculix作为一个开源的有限元分析软件,提供了强大的功能来处理热力......
  • 材料力学仿真软件:Calculix_(16).高级建模技巧
    高级建模技巧在材料力学仿真的领域中,高级建模技巧是提高仿真精度和效率的关键。本节将详细介绍如何在Calculix中运用这些技巧,包括复杂的几何建模、高级材料属性设置、边界条件的优化以及网格划分的策略。复杂几何建模1.使用CAD工具导入复杂几何模型在进行材料力学仿真......