好友
阅读权限 10
听众
最后登录 1970-1-1
夜雨闻笛
发表于 2024-4-5 20:10
25 吾爱币
我想用C#写一个控制台展示效果的方法,具体显示造型如下:
------------------|效果图|------------------
┆ 展示的某些数据1……(长度不定) ┆
┆ 数据2……(长度不定) ┆
┆ 3……(长度不定) ┆
┆ 展示的某些数据4……(长度不定) ┆
┆ 某些数据5…(长度不定) ┆
┆ 展示的某些数据6……(长度不定) ┆
┆ 展示的某些数据7……(不定) ┆
------------------|效果图|------------------
里面的内容长度是不等的,不需要什么特别的对齐方式。
唯一的要求就是外面的边框要统一。就像一张纸上写了很多东西,不能因为某一行没写满,就把那一行多余的纸裁掉,而是那一行的纸的边框依然和其他行的边框在同样的垂直线上。
我的思路是如果每一行不足指定长度,我就用空格补齐这一行数据。
结果代码走下来歪扭七八的,每行的外边框位置都不一样。稍微差一点就会搞得不对齐,我也不知道为什么会这样。
希望大佬帮帮忙,看看这样的效果图怎么做出来。不一定要按我写的代码优化,如果有好的写法完全可以重新写。
请大佬教我。
蟹蟹。
[C#] 纯文本查看 复制代码
public static void 测试(某个需要显示效果的类 q,int 每行最大长度=16)
{
StringBuilder 字符串 = new();
string 每行最左侧间距 = " ";
string 两侧添加符 = "┆";
字符串.AppendLine("-----|效果图|-----");
//这里要添加传入的形参类的许多字段,为了节约帖子篇幅,就只写一个示范了
for (int i = 0; i < q.仓库金属.Length; i++)
{
string 临时字符组 = "";
string 预留空格 = "";
临时字符组 += $"{两侧添加符}{每行最左侧间距}";//首先把每行的左侧统一符号和空格写出
临时字符组 += $"{q.仓库金属[i]}:{q.金属吨数[i]:f1}吨";//然后在后面写入需要写入的数据
for (int j = 每行最大长度 - 临时字符组.Length; j < 每行最大长度; j++)
{
//得出字符长度和限定长度之间的差值,不足的用空格补足
预留空格 += " ";
} 临时字符组 += $"{预留空格}";//将补上的空格放入字符组里
//通过上面几步,现在的一行数据应该是统一的规定长度了,最后再本行结尾加上规定符号
临时字符组 += $"{两侧添加符}";
字符串.AppendLine($"{临时字符组}");
}
//……添加其他数据
字符串.AppendLine("-----|效果图|-----");
Console.WriteLine(字符串);
}
最佳答案
查看完整内容
控制台有个SetCursorPosition
[mw_shl_code=csharp,true]
string[] data = {"展示的某些数据1", "数据2非常非常长", "3", "展示的某些数据4……"};
const string DIVIDER = "------------------|效果图|------------------";
Console.WriteLine(DIVIDER);
int end = 44 - 1; // 这里改成计算每行最大字符查高度,减去最后一个"|"
int i = 0;
for ...
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。