Createdelimitedtextinc#usingseparatecolumns数据在列中正确显示。FirstnameLastnameAgeJohnSmith17JamesSawyer31我尝试了“t”字符,但我得到的是:FirstnameLastnameAgeJohnSmith17JamesSawyer31这是我的代码:string[,]P=newstring[2,3]{{“约翰”,“史密斯”,“17”},{“詹姆斯”,“索耶”,“31”}};使用(StreamWriters_w=newStreamWriter(target)){s_w.WriteLine("名字t姓氏t年龄");对于(inti=0;i<2;i++){s_w.WriteLine("{0}t{1}t{2}",P[i,0],P[i,1],P[i,2]);您可以像这样使用PadRight:s_w.WriteLine("{0}t{1}t{2}",P[i,0].PadRight(10,''),P[i,1].PadRight(10,''),P[i,2].PadRight(10,''));请注意,最后一个PadRight不是必需的,因为它是最后一个PadRight不需要在右侧附加任何内容。如果您有更多属性,那么您也需要使用它。使用string.Format和复合格式精度函数,您可以在列中准备文本字符串,每列具有确切的字符数[,]P=newstring[2,3]{{"John","Smith","17"},{"詹姆斯","索耶","31"}};使用(StreamWriters_w=newStreamWriter(target)){stringrow=string.Format("{0,-30}{1,-30}{2,10}","名字","姓氏","年龄");s_w.WriteLine(行);for(inti=0;i这会将您的数据排列成三列,第一列是30个字符宽,文本在左侧对齐,第二列也是如此,而第三列是10个字符宽,数据(age)右对齐。当然,要查看列的精确对齐,您需要使用固定宽度的字体(例如Courier或LucidaConsole)查看数据,否则您会看到未对齐的列,但这是因为字母W在可变宽度字体中水平需要比字母i更多的像素你看到的是由于选项它卡在输出中的方式。对我来说它看起来正确地以制表符分隔,只是不同的长度导致制表符对齐到不同的制表位。如果您想在控制台中看到它,请尝试用空格填充以将每一列填充到相同数量的字符。请参阅此问题的答案以获取提示,但要点是:String.format("%10s",P[i,0]);这对其他所有人都是正确的。如果它实际上应该被读取为数据,那么保留它现在是正确的(尽管您可能想要删除字符串中的空格(即"{0}t{1}t{2}".您好:如果您绝对有必要使用TAB字符(即,如果您需要生成一个可以在MicrosoftExcel中轻松读取的文件,作为TAB分隔的文本文件),那么您做对了,因为您是每两列TAB之间只使用一个。但是,如果您想要显示间距合理的列,那么我建议使用空格而不是TAB字符。它更容易管理。搜索所有字符串并找到最宽的一个,例如,将Add5添加到该值,并使用该知识来布置字符串(即根据需要添加尽可能多的空间以使所有列看起来对齐。)如果您需要帮助代码,我可以稍后发布。但请告诉我。我想你想用空格而不是制表符来填充你的数据,这些并不总是排成一行:s_w.WriteLine("FirstnameLastnameAge");for(inti=0;iSelman22的回答正是这样做的这个工作,这里还有一个更简洁的解决方案:以上是C#学习教程:在C#中使用单独的列创建定界文本如果对大家有用需要分享我分享了解更多C#学习教程,希望大家多多关注---string[,]P=newstring[2,3]{{"John","Smith","17"},{"James","Sawyer","31"}};使用(StreamWriters_w=newStreamWriter(target)){s_w.WriteLine("{0,-15}{1,-15}{2,-15}","名字","Lastname","Age");for(inti=0;i本文采集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如转载请注明出处:
