我有一个包含3个'\ t'的字符串,当我使用诸如以下的正确方法时:
string.padright(totalWidth);
或
string.format("{0,width}",myText);
或者甚至是一个从头开始的函数,我都遇到了一个问题,即字符串中的'\ t'转义为1,但取决于字符串,介于0到8之间。
最后,如果我有这个字符串“ blah \ tblah \ tblah”,并且我将这些方法应用为长度为20的字符串,我会得到这个
"blah blah blah "
长度为30。
在显示字符串后如何计算'\ t'填充的空格?
答案 0 :(得分:-1)
制表符有点奇怪,因为它们是单个字符,但是有效宽度是可变的。这取决于当前屏幕上有多少个字符以及标签的宽度。
可以编写将制表符扩展为空格的功能。
string ExpandTabs(string input, int tabWidth = 8)
{
if (string.IsNullOrEmpty(input))
return input;
var result = new System.Text.StringBuilder(input.Length);
foreach (var ch in input)
{
if (ch == '\t')
{
result.Append(' ');
while (result.Length % tabWidth != 0)
result.Append(' ');
}
else
result.Append(ch);
}
return result.ToString();
}
请注意,这是一个非常幼稚的功能。如果嵌入了\r
或\n
字符,它将无法正常工作,其他字符也会引起问题。