为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中是否有更简单的方法来格式化具有精确长度的字符串?

在 C# 中是否有更简单的方法来格式化具有精确长度的字符串?

C#
繁华开满天机 2021-07-27 21:10:13
我需要将字符串格式化为恰好 x 个字符,但我格式化的值可以是任意长度。"" => "          ""New York" => "New York  ""New York City" => "New York C"目前,我正在这样做:$"{(address.City.Substring(0, address.City.Length > 20 ? 20 : address.City.Length)),20}"但是我做的越多,这变得非常乏味且容易出错:var builder = new StringBuilder();builder.AppendLine($"{(address.Street1.Substring(0, address.Street1.Length > 30 ? 30 : address.Street1.Length)),30}");builder.AppendLine($"{(address.Street2.Substring(0, address.Street2.Length > 30 ? 30 : address.Street2.Length)),30}");builder.AppendLine($"{(address.City.Substring(0, address.City.Length > 20 ? 20 : address.City.Length)),20}");builder.AppendLine($"{(address.State.Substring(0, address.State.Length > 5 ? 5 : address.State.Length)),5}");builder.AppendLine($"{(address.Zip.Substring(0, address.Zip.Length > 10 ? 10 : address.Zip.Length)),10}");var result = builder.ToString();我还有大约 30 件其他事情需要做这件事。如果有这样的东西,那就太好了:address.City.SubstringExact(0, 20)
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您可以向字符串添加一个扩展方法,它会为您做到这一点:


public static class StringExtensions

{

    public static string ToLength(this string self, int length)

    {

        if(self == null)

           return null;


        return self.Length > length ? self.Substring(0, length) : self.PadRight(length);

    }

}


查看完整回答
反对 回复 2021-07-31
?
千巷猫影

TA贡献1829条经验 获得超7个赞

尝试 str.PadRight(x, ' ').Substring(0, x);


string str1 = "";

string res1 = str1.PadRight(10, ' ').Substring(0, 10);

// "          "

string str2 = "New York  ";

string res2 = str2.PadRight(10, ' ').Substring(0, 10);

//"New York  "

string str3 = "New York C";

string res3 = str3.PadRight(10, ' ').Substring(0, 10);

//"New York C"


查看完整回答
反对 回复 2021-07-31
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您可以使用填充创建扩展方法:


public static class StringExtensions

{

    public static string SubstringExact(this string src, int start, int length) 

    {

         return src.PadRight(start + length).Substring(start, length);

    } 


查看完整回答
反对 回复 2021-07-31
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信