Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#正确对齐选项卡式CSV数据文本文件?_C#_String - Fatal编程技术网

如何使用C#正确对齐选项卡式CSV数据文本文件?

如何使用C#正确对齐选项卡式CSV数据文本文件?,c#,string,C#,String,我使用以下stringBuilder作为Log4net日志布局的一部分 var sb = new StringBuilder(DateTime.Now.ToString(DateFormatString, CultureInfo.InvariantCulture)); sb.Append("\t"); sb.Append(log.EventAction); sb.Append("\t"); sb.Ap

我使用以下stringBuilder作为Log4net日志布局的一部分

var sb = new StringBuilder(DateTime.Now.ToString(DateFormatString, CultureInfo.InvariantCulture));
            sb.Append("\t");
            sb.Append(log.EventAction);
            sb.Append("\t");
            sb.Append(log.Id);
            sb.Append("\t");
            sb.Append(log.MessageId);
            sb.Append("\t");
            sb.Append(log.CodeBlock);
            sb.Append("\t");
            sb.Append(log.Details);
我希望\t(制表符)能为我提供一个精确的制表符,以便在目测检查文本文件时,列能够对齐。然而事实并非如此

列没有对齐,当我在MS Word和“显示特殊字符”中打开文本文件时,我看到相同的选项卡条目似乎存在,但在记事本中,从视觉上看,列没有对齐

我真的很困惑,也许我需要回顾一下tab的定义,有人能提供这个问题的见解或解决方法吗

更新:

我注意到,如果字符串长度相同,则列会对齐,例如:

string1(len5) TAB string2(len5) TAB string3(len5)
string1(len5) TAB string2(len5) TAB string3(len5)
string1(len5) TAB string2(len5) TAB string3(len5)
但是,如果字符串长度不同,则会显示制表符字符,但字符串不会对齐:

string1(len5) TAB string2(len5) TAB string3(len5)
string1(len10) TAB     string2(len5) TAB string3(len5)
string1(len5) TAB string2(len5) TAB string3(len5)
string1(len10) TAB     string2(len5) TAB string3(len5)

类似这样的东西…

选项卡只是一个逻辑分隔符。它没有强制数据对齐的神奇能力,这取决于您的查看器如何解释选项卡;它可能意味着“缩进4个字符”,也可能意味着“四舍五入到最接近的第8个字符”。因此,它通常非常依赖于现有的数据长度。在Word中,它通常被解释为“移动到下一个预定义选项卡”,但这取决于a:Word中定义了哪些选项卡,b:数据已经有多宽(即“下一个”是什么)

在Excel(或任何电子表格)中,它通常被解释为列。因此,电子表格可能是浏览表格分隔数据(如果您关心列)的最佳选择


所以,;您使用的是什么查看器?

您所说的“2个版本的选项卡”到底是什么意思?嗨,马克,我更新了这个问题。Notepad.exe-经常在服务器上查看。@JL,那么这根本不起作用。如果您需要数据对齐,您可能需要使用空格填充,但要做到这一点,您需要先知道每个字段的最大长度。padding ftw。。。否则就是一个不错的选项卡式日志查看器。谢谢你,马克!