根据这个https://stackoverflow.com/a/48805101/7273263答案,我正在使用这个代码
public static class StringBuilderExtensions
{
public static void AppendPadded(this StringBuilder builder, string value, int length);
{
builder.Append($"{value}{new string(" ", length)}".Substring(0, length));
}
public static void AppendPadded(this StringBuilder builder, int value, int length);
{
builder.Append($"{new string("0", length)}{value}".Reverse().ToString().Substring(0, length).Reverse().ToString());
}
}
但是我得到了编译器警告,请检查
我需要根据字符串的长度和数字的跟踪零生成空间..请一些帮助。我需要使用这个扩展
用法:
StringBuilder builder = new StringBuilder();
builder.AppendPadded("Hiwor", 8); //space if less than 8
builder.AppendPadded("meena", 10); //space if less than 10
return builder.ToString();
错误:项目文件行抑制状态错误CS1503参数1:无法从'字符串'转换为'char' Web。API E:WorkSpaceBankingSolutionsCPSWeb.APIExtensionsStringBuilderExtension.cs 13 Active
这是一个简单的bug。您正在使用的string
构造函数正在寻找第一个参数char
(而不是string
) -因此说new string(' ', length)
而不是new string(" ", length)
等
Ref: String(Char,Int32)(感谢下面的@Fildor的推动)
让我们来看看这个:
using System;
using System.Text;
public class Program
{
public static void Main()
{
StringBuilder sb = new StringBuilder();
sb.AppendPadded("asdf", 10);
sb.AppendPadded(1234, 10);
Console.WriteLine(sb);
}
}
public static class StrungBuilderExtensions
{
public static void AppendPadded(this StringBuilder builder, string appendix, int width)
{
builder.Append(appendix.PadRight(width, ' '));
}
public static void AppendPadded(this StringBuilder builder, int appendix, int width)
{
builder.Append(appendix.ToString().PadLeft(width, '0'));
}
}
In Action: https://dotnetfiddle.net/1rNKfg
输出:
asdf 0000001234
我没有跑任何马,所以我不能说哪个更快或更高效的内存。但是至少我倾向于发现这更容易读。
除了上面的方法,您还可以使用StringBuilder。AppendFormat(String, Object)与String Format: Control Spacing
结合使用