分享一个把表格类型的数据转换成字符串,以表格样式输出,方便控制台和日志记录时更直观

调用实例:

Console.WriteLine("Hello, World!");List<string[]> tabLog = new List<string[]>();
tabLog.Add(new string[] { "编号", "姓名", "性别", "年龄","备注" });
tabLog.Add(new string[] { "1", "张三", "男", "12","这个地方的数据可能很长" });
tabLog.Add(new string[] { "2", "李四", "不清不楚的", "15", "这个地方的数据可能很长很长" });
tabLog.Add(new string[] { "3", "王五", "女", "10" ,"短了"});var strLog = TableDataToStr(tabLog.ToArray());Console.WriteLine(strLog);

依赖方法:

/// <summary>/// 根据asc码来判断字符串的长度,在0~127间字符长度加1,否则加2/// </summary>/// <returns>需要返回长度的字符串 </returns>public static int TrueLength(string str){int lenTotal = 0;int n = str.Length;string strWord = "";  //清空字符串int asc;for (int i = 0; i < n; i++){strWord = str.Substring(i, 1);asc = Convert.ToChar(strWord);if (asc < 0 || asc > 127)      // 在0~127间字符长度加1,否则加2{lenTotal = lenTotal + 2;}else{lenTotal = lenTotal + 1;}}return lenTotal;}/// <summary>/// 统一字符串的长度/// <param name="strOriginal">初始字符串</param>/// <param name="maxTrueLength">规定统一字符串的长度</param>/// </summary>///  <returns>返回统一后的字符串</returns>public static string PadRightTrueLen(string strOriginal, int maxTrueLength){const char chrPad = ' ';string strNew = strOriginal;if (strOriginal == null || maxTrueLength <= 0){strNew = "";return strNew;}int trueLen = TrueLength(strOriginal);if (trueLen < maxTrueLength){// 填充  小于规定长度 用' '追加,直至等于规定长度for (int i = 0; i < maxTrueLength - trueLen; i++){strNew += chrPad.ToString();}}else{throw new Exception("当前的长度大于了最大的长度maxTrueLength");}return strNew;}/// <summary>/// 表格数据转字符串/// </summary>/// <param name="table"></param>/// <returns></returns>public static string TableDataToStr(string[][] table){bool createGap = false;reset:List<Tuple<int, int, StringBuilder, int>> lst = new List<Tuple<int, int, StringBuilder, int>>();for (int i = 0, length = table.Length; i < length; i++){string[] r = table[i];for (int j = 0, length2 = r.Length; j < length2; j++){var cell = new StringBuilder(r[j]);int tl = TrueLength(cell.ToString());lst.Add(new Tuple<int, int, StringBuilder, int>(i, j, cell, tl));}}if (!createGap){// 最长的列追加间隙foreach (var item in lst){var max = lst.Where(c => c.Item2 == item.Item2).OrderByDescending(c => c.Item4).First();if (item.Item4 == max.Item4){table[item.Item1][item.Item2] = $"{item.Item3.ToString()}   ";}}createGap = true;goto reset;}foreach (var item in lst){var max = lst.Where(c => c.Item2 == item.Item2).OrderByDescending(c => c.Item4).First();if (item.Item4 < max.Item4){var old = item.Item3.ToString();item.Item3.Clear();item.Item3.Append(PadRightTrueLen(old, max.Item4));}}StringBuilder str = new StringBuilder();for (int i = 0, length = table.Length; i < length; i++){string[] r = table[i];for (int j = 0, length2 = r.Length; j < length2; j++){str.Append(lst.First(c => c.Item1 == i && c.Item2 == j).Item3.ToString());}if (i != length - 1){str.AppendLine();// 换行}}return str.ToString();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何有效修复ffmpeg.dll错误:一站式解决方案指南

当您遇到提示“ffmpeg.dll文件丢失”的错误时&#xff0c;这可能导致相关的应用程序无法启动或运行异常。本文将详细介绍如何有效地解决ffmpeg.dll文件丢失的问题&#xff0c;确保您的应用程序能够恢复正常运行。 ffmpeg.dll是什么&#xff1f;有哪些功能&#xff1f; ffmpeg.…

精通Redis(一)

目录 1.NoSQL 非关系型数据库 2.Redis 3.Redis的java客户端 4.Jedis 4.1Jedis快速入门 4.2Jedis连接池及使用 5.SpringDataRedis和RedisTemplate 1.NoSQL 非关系型数据库 基础篇-02.初始Redis-认识NoSQL_哔哩哔哩_bilibili NoSQL与SQL的区别就在于SQL是结构化的、关联…

Arm Cortex-M处理器对比表

Arm Cortex-M处理器对比表 当前MCU处理器上主要流行RISC-V和ARM处理器&#xff0c;其他的内核相对比较少&#xff1b;在这两种内核中&#xff0c;又以Arm Cortex-M生态环境相对健全&#xff0c;大部分的厂家都在使用ARM的处理器。本文主要介绍Arm Cortex-M各个不同系列的参数对…

前端TypeScript学习day03-TS高级类型

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 TypeScript 高级类型 class 类 class继承? extends implements? 类成员可见性? public? protect…

pyQt5基本需求v1.0

TOC(需求界面) 1.主界面介绍 首先展示项目名称&#xff0c;几个文件上传按钮&#xff0c;滑动条&#xff0c;页面切换按钮&#xff0c;系统时间展示。 2.具体页面demo 2.下期预告 视频页面的各种逻辑展示&#xff0c;大家可以先思考一下

2024年12月陪玩系统-仿东郊到家约玩系统是一种新兴的线上预约线下社交、陪伴系统分享-优雅草央千澈-附带搭建教程

2024年12月陪玩系统-仿东郊到家约玩系统是一种新兴的线上预约线下社交、陪伴系统分享-优雅草央千澈-附带搭建教程 产品介绍 仿东郊到家约玩系统是一种新兴的线上预约&#xff0c;线下社交、陪伴、助娱、助攻、分享、解答、指导等服务模式&#xff0c;范围涉及电竞、运动、音乐…

Android Stduio 2024版本设置前进和后退按钮显示在主界面

Android Studio 2024&#xff08;Ladybug&#xff09;安装后发现前进和后退按钮不显示在主界面的工具栏&#xff0c;且以前在View中设置的办法无效&#xff1a; Android Studio 2024&#xff08;Ladybug&#xff09;的设置方式&#xff1a; File->Settings->Appearance&…

Chapter 02 Python基础-1

1.Python语法 1.变量 从实例看Python代码&#xff1a; 输入圆的半径&#xff0c;计算圆面积&#xff0c;若面积大于等于10&#xff0c;则输出具体数值&#xff0c;若面积小于10&#xff0c;则只输出整数值。 分析&#xff1a; 1.圆面积计算需要用到PI&#xff0c;取什么样的…

vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,

** 方法1&#xff1a;word、xls、ppt、pdf 这些文件&#xff0c; 如果预览的文件是链接可以直接打开&#xff0c;可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…

OB删除1.5亿数据耗费2小时

目录 回顾&#xff1a;mysql是怎么删除数据的&#xff1f; 删除方案 代码实现 执行结果 结论 本篇是实际操作 批量处理数据以及线程池线程数设置 记录学习 背景&#xff1a;有一张用户标签表&#xff0c;存储数据量达4个亿&#xff0c;使用OceanBase存储&#xff0c;由于…

【2025最新计算机毕业设计】基于SSM框架的宠物领养系统【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

【专题】2024抖音电商母婴行业分析报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38651 在数字化浪潮的席卷下&#xff0c;抖音电商母婴行业正经历着深刻变革。当下&#xff0c;年轻一代父母崛起&#xff0c;特别是 24 至 30 岁以及 18 至 23 岁的群体成为抖音母婴行业兴趣人群的主力军。他们带来全新育儿理念&…

免费开源!推荐一款网页版数据库管理工具!

免费开源&#xff01;推荐一款网页版数据库管理工具&#xff01; DBGate 是一个开源的数据库管理工具&#xff0c;DBGate 的最大特点是可以 Web 访问&#xff01;&#xff0c;轻松实现一台机器部署&#xff0c;所有人使用&#xff01; 无论是 MySQL、PostgreSQL、SQLite 还是…

使用 UniApp 在微信小程序中实现 SSE 流式响应

概述 服务端发送事件(Server-Sent Events, SSE)是一种允许服务器向客户端推送实时更新的技术。SSE 提供了一种单向的通信通道,服务器可以持续地向客户端发送数据,而不需要客户端频繁发起请求。这对于需要实时更新的应用场景非常有用。 流式传输的特点是将数据逐步传输给客…

【Java项目】基于SpringBoot的【旅游管理系统 】

【Java项目】基于SpringBoot的【旅游管理系统 】 技术简介&#xff1a;本系统使用JAVA语言开发&#xff0c;采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;&#xff08;1&#xff09;管理员功能&#xff1a;可以管理个人中心、用户管理、景区分…

【系统】Windows11更新解决办法,一键暂停

最近的windows更新整的我是措不及防&#xff0c;干啥都要关注一下更新的问题&#xff0c;有的时候还关不掉&#xff0c;我的强迫症就来了&#xff0c;非得关了你不可&#xff01; 经过了九九八十一难的研究之后&#xff0c;终于找到了一个算是比较靠谱的暂停更新的方法&#x…

Canoe E2E校验自定义Checksum算法

文章目录 一、添加 DBC文件二、导入要仿真的ECU节点三、编写 CAPL脚本1. 创建 .can 文件2. 设置counter递增3. 设置 CRC 算法&#xff0c;以profile01 8-bit SAE J1850 CRC校验为例 四、开始仿真五、运行结果CRC在线校验 当E2E的 CRC算法非常规算法&#xff0c;则需要自己编写代…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private int ret;//返回周结果private int path;//枚举一个元素就异或进去public int subsetXORSum(int[] nums) {dfs(nums, 0);return ret;} private void dfs(int[] nums, int pos){ret path;for(int i pos; i <…

python使用Flask框架创建一个简单的动态日历

0. 运行效果 运行代码&#xff0c;然后在浏览器中访问 http://127.0.0.1:5000/&#xff0c;将看到一个动态日历&#xff0c;能够通过点击按钮切换月份。 1. 安装 Flask 首先&#xff0c;确保你已经安装了Flask。如果没有&#xff0c;可以使用以下命令安装&#xff1a; pip i…

windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

不要纠结&#xff0c;直接选择用perl编译&#xff01; 告诫想要用弄成vs编译版的&#xff0c;暂时先别给自己增加麻烦 告诫&#xff0c;以下执行的每一步&#xff0c;都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…