在 C#中生成\t
字符串的最佳方法是什么
我正在学习 C#,并尝试用不同的方式说同一件事。
Tabs(uint t)
是一个函数,该函数返回t
等于\t
的string
例如Tabs(3)
返回"\t\t\t"
这三种实现Tabs(uint numTabs)
方式中哪一种最好?
当然,这取决于 “最佳” 的含义。
LINQ 版本只有两行,这很不错。但是,重复和聚合调用是否不必要地浪费时间 / 资源?
StringBuilder
版本非常清晰,但StringBuilder
类的速度是否稍慢?
string
版本是基本的,这意味着它易于理解。
没关系吗?他们都平等吗?
这些都是可以帮助我更好地理解 C#的问题。
private string Tabs(uint numTabs)
{
IEnumerable<string> tabs = Enumerable.Repeat("\t", (int) numTabs);
return (numTabs > 0) ? tabs.Aggregate((sum, next) => sum + next) : "";
}
private string Tabs(uint numTabs)
{
StringBuilder sb = new StringBuilder();
for (uint i = 0; i < numTabs; i++)
sb.Append("\t");
return sb.ToString();
}
private string Tabs(uint numTabs)
{
string output = "";
for (uint i = 0; i < numTabs; i++)
{
output += '\t';
}
return output;
}
那这个呢:
string tabs = new String('\t', n);
其中n
是您要重复字符串的次数。
或更好:
static string Tabs(int n)
{
return new String('\t', n);
}
string.Concat(Enumerable.Repeat("ab", 2));
退货
“阿巴布”
和
string.Concat(Enumerable.Repeat("a", 2));
退货
“aa”
从...
在所有. NET 版本中,您可以这样重复一个字符串:
public static string Repeat(string value, int count)
{
return new StringBuilder(value.Length * count).Insert(0, value, count).ToString();
}
要重复一个字符, new String('\t', count)
是最好的选择。请参阅@CMS 的答案 。