【问题标题】:StringReader formatted stringStringReader 格式化字符串
【发布时间】:2011-05-11 06:44:57
【问题描述】:

我关注了this Wordpress tutorial,效果很好。我使用了一个列表视图,当我尝试格式化字符串时,它无法识别\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 确实有效。有谁知道我可以在不使用空格的情况下格式化字符串。

结果是这样的

名称国家/地区

LongernameStateCountry

anotherNameAnotherStateAnotherCountry

我希望它们排列在一起(如在表格中),名称为一列,说明另一列和国家/地区,然后是第三列

非常感谢任何建议

【问题讨论】:

  • 您能提供一个小代码示例吗?或者稍微澄清一下这个问题?
  • 你怎么知道它没有识别标签?在某些情况下,不会打印选项卡。换句话说,字符串“a\tb”显示为“ab”而不是“a b”
  • 你想从 Listveiw 的文本中删除 \t 和 \n 吗?请详细说明你想要什么,特别是格式化字符串是什么意思以及你想要它到哪里格式化以及如何格式化。
  • 如何将其格式化为此评论框中的代码?
  • 把它放在一个答案中。文本编辑框右侧的帮助链接(编辑评论时)描述了 cmets 中使用的迷你标记。

标签: c# string format stringreader


【解决方案1】:

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

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

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

请参阅Graphics.DrawString 的文档。

【讨论】:

  • 谢谢。我最初尝试过,但显然我做错了什么,但现在效果很好。
猜你喜欢
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多