StringReader格式化字符串

时间:2011-05-11 06:44:57

标签: c# string format stringreader

我跟着this Wordpress tutorial效果很好。我使用了listview,当我尝试格式化字符串时,它无法识别\t(但确实识别\n)。它也不会识别String.Format等。

无论如何我可以使用制表符或类似的东西来格式化字符串吗?

干杯

修改

for( i = 0; i < lstView.Items.Count;i++) 
{ 
    name = lstView.Items[i].Text; 
    state = lstView.Items[i].SubItems[1].Text; 
    country = lstView.Items[i].SubItems[2].Text; 
    line += name + "\t" + state + "\t" + country + "\n"; 
}  
StringReader reader = new StringReader(line); 

当使用line打印时,字符串连接在一起,因此\ t不起作用。但是新行的\ n确实有效。有没有人知道我可以在不使用空格的情况下格式化字符串。

结果是这样的                         

NameStateCountry

                        

LongernameStateCountry

                        

anotherNameAnotherStateAnotherCountry

我希望他们排成一行(如表中所示),名称为一列,说明另一列和国家,然后是第三个

任何建议都非常感谢

1 个答案:

答案 0 :(得分:1)

嗯,标签丢失有点奇怪,但另一方面,如果各个字符串元素(名称,状态等)的长度不同,标签可能会出现问题。
你可以做的是使用string.Format()并使用固定的列宽 为了获得良好的视觉输出,这将包括一个解析步骤来确定正确的列宽 完成后,使用类似的东西来使用空格而不是制表符。

string line = string.Format("{0,-20}{1,-20}{2,-20}", "name", "state", "country");

编辑:看到您不想使用空格 在这种情况下,您可能需要在打印算法本身中处理此问题。您仍然可以使用制表符分隔项目,然后为每行分割选项卡,每行创建一个项目(列)数组 对于每个项目,使用Graphics.DrawString()以适当的X位置偏移打印它。

请参阅Graphics.DrawString的文档。