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

Gra*_*ham 8 c# string

是否有一种单行方式将字符串设置为固定长度(在C#中),方法是截断它或用空格填充它.

例如:

string s1 = "abcdef";
string s2 = "abc";
Run Code Online (Sandbox Code Playgroud)

设置为长度5后,我们应该:

"abcde"
"abc  "
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 13

您需要的只是PadRight后跟Substring(假设source不是null):

string source = ...
int length = 5;

string result = source.PadRight(length).Substring(0, length);
Run Code Online (Sandbox Code Playgroud)

万一source 可以null:

string result = source == null 
  ? new string(' ', length) 
  : source.PadRight(length).Substring(0, length);
Run Code Online (Sandbox Code Playgroud)

  • @rhavelka:`PadRight(length)`保证我们*至少*有`length`长度,然后`Substring(0, length)`保证我们*最多*有`length`长度;到目前为止,我们已经得到了精确的“length”长度 (2认同)

wak*_*aka 5

private string fixedLength(string input, int length){
    if(input.Length > length)
        return input.Substring(0,length);
    else
        return input.PadRight(length, ' ');
}
Run Code Online (Sandbox Code Playgroud)

  • @Graham:使其成为扩展方法对于这种情况会更好 (2认同)