如何在 c# 中将字符串截断或填充为固定长度



是否有一种单行方法可以将string设置为固定长度(在 C# 中(,通过截断它或用空格填充它 ( ' ' (。

例如:

string s1 = "abcdef";
string s2 = "abc";

将两者设置为 长度 5 后,我们应该有:

"abcde"
"abc  "

您所需要的只是PadRight后跟Substring(前提是source不是null(:

string source = ...
int length = 5;
string result = source.PadRight(length).Substring(0, length);

如果source可以null

string result = source == null 
  ? new string(' ', length) 
  : source.PadRight(length).Substring(0, length);
private string fixedLength(string input, int length){
    if(input.Length > length)
        return input.Substring(0,length);
    else
        return input.PadRight(length, ' ');
}

(此答案以前包含不正确的代码,如注释中所述。

自定义的单行将是str.Length > 5 ? str.Substring(0,5) : str.PadRight(5);

我会使用@waka答案,但作为扩展方法和空验证,如下所示:

    public static string FixedLength(this string value, int totalWidth, char paddingChar)
    {
        if (value is null)
            return new string(paddingChar, totalWidth);
        if (value.Length > totalWidth)
            return value.Substring(0, totalWidth);
        else
            return value.PadRight(totalWidth, paddingChar);
    }

你试过吗 S1.垫左(5(;

如果您想要空格以外的其他内容,也可以指定填充字符

s1.PadLeft(6, '.');

会给你:"abcdef。

要同时执行这两项操作:

var s1 = "1234567890";
var s2 = s1.SubString(5).PadLeft(5);

这将始终生成一个字符串,其中包含 <= maxWidth 字符

public static string MaxLength(this string value, int maxWidth)
{
  return (value == null) ?
  String.Empty :
  value.PadRight(maxWidth).Substring(0, maxWidth).TrimEnd();
}

相关内容

  • 没有找到相关文章

最新更新