6

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

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

7 回答 7

21

您可以使用以下命令创建缩进:

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

IndentSize将是一个值为 4 或 8 的常数。

于 2013-03-20T16:49:26.813 回答
10

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

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

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

Indent(4) + "My Random Text"

在您的应用程序中,您可以简单地执行以下操作:

s.Write(Indent(indentLevel));

或者

s.Write("".PadLeft(indentLevel));
于 2013-03-20T16:50:14.300 回答
5

它在盒子里!

使用System.CodeDom.Compiler.IndentedTextWriter.

于 2013-03-20T17:00:37.157 回答
4

如果你想缩进字符串的每一行,你可以使用这个扩展。

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);
于 2017-09-04T04:33:29.990 回答
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();
}
于 2016-02-26T00:59:43.317 回答
0

还有一种方式:

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

string res = String.Format("{0," + indentLevel + "}{1}", String.Empty, myText);
于 2015-01-02T08:08:27.397 回答
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 );
    }
于 2021-01-13T17:15:50.570 回答