为单行文本生成缩进字符串

时间:2013-03-20 16:47:38

标签: c# string indentation

从空格字符生成缩进行的最佳方法是什么。我的意思是类似的东西:

    string indent = String.Join("    ", new String[indentlevel]);
    s.Write(indent + "My line of text");

7 个答案:

答案 0 :(得分:17)

您可以使用以下方法创建缩进:

var indent = new string(' ', indentLevel * IndentSize);

IndentSize将是值为4或8的常量。

答案 1 :(得分:8)

我可能会做这样的事情来添加Indent

public static string Indent(int count)
{
    return "".PadLeft(count);
}

要使用它,您可以执行以下操作:

Indent(4) + "My Random Text"

在您的应用程序中,您可以这样做:

s.Write(Indent(indentLevel));

s.Write("".PadLeft(indentLevel));

答案 2 :(得分:5)

它出现在盒子里!

使用System.CodeDom.Compiler.IndentedTextWriter

答案 3 :(得分:2)

如果要缩进字符串的每一行,可以使用此扩展名。

public static class StringExtensions
{
    public static string Indent(this string value, int size)
    {
        var strArray = value.Split('\n');
        var sb = new StringBuilder();
        foreach (var s in strArray)
            sb.Append(new string(' ', size)).Append(s);
        return sb.ToString();
    }
}

像这样使用:

MyString.Indent(4);

答案 4 :(得分:1)

您可以使用此通用字符串扩展方法(它的性能和内存最优)。您可以将它保存在主应用程序项目的中央“核心”项目引用中,然后每当您想获得任何字符串的缩进版本时,它就是:

myString.Indent(n)

(其中'n'是缩进级别)

private const byte _indentSize = 4;

public static string Indent(this string originalString, int indentLevel)
{
    StringBuilder indentedString = new StringBuilder();
    indentedString.Append("".PadLeft(indentLevel * _indentSize));
    indentedString.Append(originalString);
    return indentedString.ToString();
}

答案 5 :(得分:0)

另一种方式:

int indentLevel = 4;
string myText = "This string will become indented";

string res = String.Format("{0," + indentLevel + "}{1}", String.Empty, myText);

答案 6 :(得分:0)

这应该适用于 \r\n 和 \n 分隔符。

   public static string Indent(this string value, string indent) {
        var builder = new StringBuilder();
        foreach (var line in value.GetLines()) {
            builder.Append( indent ).Append( line );
        }
        return builder.ToString();
    }
    private static IEnumerable<string> GetLines(this string value) {
        var start = 0;
        while (start < value.Length) {
            var end = value.IndexOf( '\n', start );
            if (end != -1) {
                yield return value.Substring( start, (end - start + 1) );
                start = end + 1;
            } else {
                break;
            }
        }
        if (start < value.Length) yield return value.Substring( start );
    }