协慌网

登录 贡献 社区

在 C#中重复字符的最佳方法

在 C#中生成\t字符串的最佳方法是什么

我正在学习 C#,并尝试用不同的方式说同一件事。

Tabs(uint t)是一个函数,该函数返回t等于\tstring

例如Tabs(3)返回"\t\t\t"

这三种实现Tabs(uint numTabs)方式中哪一种最好?

当然,这取决于 “最佳” 的含义。

  1. LINQ 版本只有两行,这很不错。但是,重复和聚合调用是否不必要地浪费时间 / 资源?

  2. StringBuilder版本非常清晰,但StringBuilder类的速度是否稍慢?

  3. string版本是基本的,这意味着它易于理解。

  4. 没关系吗?他们都平等吗?

这些都是可以帮助我更好地理解 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 中重复字符串或 char?

在所有. 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 的答案