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

How to truncate or pad a string to a fixed length in c#

是否有一种将 string 设置为 固定长度 (在 C# 中)的单行方法,方法是 truncating 它或 padding 它有空格 (' ').

例如:

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

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

"abcde"
"abc  "

你试过了吗 s1.PadLeft(5);

如果你想要的不是空格,你也可以指定填充字符

s1.PadLeft(6, '.');

会给你:"abcdef."

两者兼顾:

var s1 = "1234567890";
var s2 = s1.SubString(5).PadLeft(5);
private string fixedLength(string input, int length){
    if(input.Length > length)
        return input.Substring(0,length);
    else
        return input.PadRight(length, ' ');
}

你只需要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);

(此答案之前包含不正确的代码,如评论中所引用。)

自定义单行代码为 str.Length > 5 ? str.Substring(0,5) : str.PadRight(5);

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

    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);
    }