如何在Console.WriteLine中实现多行输出?寻求替代\r\n的方案
优化Console.WriteLine换行输出的几种方案
我希望用Console.WriteLine输出内容时每个部分单独占一行,目前用\r\n做换行处理,但这种方式不好维护,有没有更优的替代方案?当前实现代码如下:
Console.WriteLine(" What Operation you need to perform A-Addition: S-Subtraction: M-Multiplication: L-FindLargestElementInMatrix: S-FindSmallestElementInMatrix: DL-DisplayLowerTriangularMatrix: DU-DisplayUpperTriangularMatrix: T-FindTransposeOfMatrix: E-CheckIfTwoMatricesEqual: I-CheckIfTwoMatrixIsIdentityMatrix: S-SumOfDiagonalElementsOfMatrix: AR-SumOfEachRowOfMatrix: AC-SumOfEachColumnOfMatrix: IR-InterchangeRowsOfMatrix: IC-InterchangeColumnsOfMatrix: ");
方案1:逐行调用Console.WriteLine
直接给每个选项单独调用一次Console.WriteLine,逻辑清晰,后续要加删选项直接操作对应行即可,维护成本极低:
Console.WriteLine("请选择要执行的操作:"); Console.WriteLine("A-加法"); Console.WriteLine("S-减法"); Console.WriteLine("M-乘法"); Console.WriteLine("L-查找矩阵中最大元素"); Console.WriteLine("Sm-查找矩阵中最小元素"); // 原代码有重复的S前缀,这里重命名避免用户混淆 Console.WriteLine("DL-显示矩阵下三角"); Console.WriteLine("DU-显示矩阵上三角"); Console.WriteLine("T-求矩阵转置"); Console.WriteLine("E-判断两个矩阵是否相等"); Console.WriteLine("I-判断矩阵是否为单位矩阵"); Console.WriteLine("Sd-求矩阵对角线元素和"); // 同样重命名解决前缀冲突 Console.WriteLine("AR-求矩阵每行元素和"); Console.WriteLine("AC-求矩阵每列元素和"); Console.WriteLine("IR-交换矩阵的行"); Console.WriteLine("IC-交换矩阵的列");
方案2:用Environment.NewLine拼接字符串
利用string.Join结合Environment.NewLine拼接所有内容,它会自动适配当前系统的换行规则(Windows是\r\n,Linux/macOS是\n),比硬写\r\n更通用:
var menuContent = string.Join(Environment.NewLine, "请选择要执行的操作:", "A-加法", "S-减法", "M-乘法", "L-查找矩阵中最大元素", "Sm-查找矩阵中最小元素", "DL-显示矩阵下三角", "DU-显示矩阵上三角", "T-求矩阵转置", "E-判断两个矩阵是否相等", "I-判断矩阵是否为单位矩阵", "Sd-求矩阵对角线元素和", "AR-求矩阵每行元素和", "AC-求矩阵每列元素和", "IR-交换矩阵的行", "IC-交换矩阵的列"); Console.WriteLine(menuContent);
方案3:使用C# 11+的原始字符串字面量
如果你的项目基于C# 11及以上版本,可以用三个双引号包裹多行字符串,直接保留编写时的换行格式,不需要额外转义,可读性拉满:
Console.WriteLine(""" 请选择要执行的操作: A-加法 S-减法 M-乘法 L-查找矩阵中最大元素 Sm-查找矩阵中最小元素 DL-显示矩阵下三角 DU-显示矩阵上三角 T-求矩阵转置 E-判断两个矩阵是否相等 I-判断矩阵是否为单位矩阵 Sd-求矩阵对角线元素和 AR-求矩阵每行元素和 AC-求矩阵每列元素和 IR-交换矩阵的行 IC-交换矩阵的列 """);
额外提醒
原代码里有三个S开头的选项(减法、最小元素、对角线和),用户选择时必然会出现歧义,建议给这类重复前缀的操作重新命名独特标识,比如用Sm代表最小元素、Sd代表对角线和,避免用户混淆。
内容的提问来源于stack exchange,提问作者MPC
相关产品推荐
相关产品推荐

