字符串生成器,为字符串生成空间,为数字生成 0

  • 本文关键字:字符串 数字 空间 c#
  • 更新时间 :
  • 英文 :


根据这个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

结合使用

最新更新