Reputation: 9451
After searching the web and reading docs on MSDN, I couldn't find any examples of how to replicate a tab character in C#. I was going to post a question here when I finally figured it out...
I'm sure it is obvious to those fluent in C#, but there were SO many similar questions in various forums, I thought an example was worth posting (for those still learning C# like me). Key points:
string
char
\t
in a string is converted to a tab: "John\tSmith"
'\t'
by itself is like a tab constHere is some code to add tabs to the front of an HTML line, and end it with a newline:
public static string FormatHTMLLine(int Indent, string Value)
{
return new string('\t', Indent) + Value + "\n";
}
You could also use:
string s = new string('\t', Indent);
Is this the most efficient way to replicate tabs in C#? Since I'm not yet 'fluent', I would appreciate any pointers.
Upvotes: 0
Views: 3630
Reputation: 707
1) You should cache and reuse results from calling new string('\t', Indent). 2) Try not to generate new string from FormatHTMLLine. For example, you can consider write them to output stream.
void IndentWrite(int indent, string value)
{
if (indent > 0)
{
if (s_TabArray == null)
{
s_TabArray = new char[MaxIndent];
for (int i=0; i<MaxIndent; i++) s_TabArray[i]='\t';
}
m_writer.Write(s_TabArray, 0, indent);
}
m_writer.Write(value);
m_writer.Write('\n');
}
Upvotes: 1
Reputation: 838336
Yes, I think this is the best way.
The string constructor you are using constructs a string containing the character you specify as the first argument repeated count
times, where count
is the second argument.
Upvotes: 1