代码之家  ›  专栏  ›  技术社区  ›  NotDan

如何以编程方式在C#中创建字符串?

c#
  •  6
  • NotDan  · 技术社区  · 15 年前

    我有一个字符串,我想根据一个int变量在字符串的开头加上一些空格。
    我想这样做:

    int NumberOfTabs = 2;
    string line = "my line";
    string line = String.Format("{0}{1}", "    " * NumberOfTabs, line);
    

    …现在这条线有8个空格

    10 回复  |  直到 15 年前
        1
  •  18
  •   Nick Craver    15 年前

    你可以用 String(char, Int32)

    string line = String.Format("{0}{1}", new String(' ', NumberofTabs * 4), line);
    

    或者更高效一点:

    string line = String.Concat(new String(' ', NumberofTabs * 4), line);
    

    string line = new String(' ', NumberofTabs * 4).Concat(line);
    

    一个注释很好地说明了这一点,如果您想实际使用制表符,只需更改 ' ' '\t' * 4 这样地:

    string line = String.Concat(new String('\t', NumberofTabs), line);
    
        2
  •  8
  •   Chris McCall    15 年前
    int i=8;
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append(" ", i);
    
        3
  •  6
  •   Codism    15 年前
    new string(' ', NumberOfTabs )
    
        4
  •  4
  •   ANeves    15 年前
    str = str.PadLeft(str.Length+tabs*4);
    
        5
  •  3
  •   Joe Pitz    15 年前

    在C语言中,字符串是不可变的。您应该真正使用stringbuilder类。

    链接中列出了代码示例:

    http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx

        6
  •  2
  •   Ben Griswold    15 年前

    你可以用这样的方法:

    String.Empty.PadRight(NumberOfTabs)
    
        7
  •  2
  •   Community CDub    8 年前

    您可以在文本开头添加选项卡,如下所示:

    line.PadLeft(NumberOfTabs, '\t');
    

    \t是“tab”的转义符 ( Inserting a tab character into text using C# )

        8
  •  2
  •   Tom Brothers    15 年前
    int NumberOfTabs = 2;
    string line = "my line";
    string results = line.PadLeft(line.Length + NumberOfTabs, ' ');
    
        9
  •  2
  •   Judah Gabriel Himango    15 年前

    从任何角度来看,这都不是最好的答案,但这里有一个有趣的答案,一个小小的LINQ one liner:

    var result = new string(Enumerable.Repeat(' ', count).Concat("my line").ToArray());
    
        10
  •  0
  •   AndiDog    15 年前

    " " * 2 ). 但你可以将空格数乘以4得到“制表符”:

    int numberOfTabs = 2;
    string line = "my line";
    string whitespaces = new string(' ', numberOfTabs * 4);
    string s = whitespaces + line;