从空格字符生成缩进行的最佳方法是什么。我的意思是类似的东西:
string indent = String.Join(" ", new String[indentlevel]);
s.Write(indent + "My line of text");
答案 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)
它出现在盒子里!
答案 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 );
}