有没有一种一行代码的方法可以将一个字符串(在C#中)设置为固定长度,无论是通过截断还是填充空格(' '
)。
例如:
string s1 = "abcdef";
string s2 = "abc";
将两者都设置为长度5
后,我们应该有:
"abcde"
"abc "
PadRight
和Substring
函数即可实现(前提是source
不为空):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);
.Substring(0, length)
? - rhavelkaprivate string fixedLength(string input, int length){
if(input.Length > length)
return input.Substring(0,length);
else
return input.PadRight(length, ' ');
}
s1.Length > 5 ? s1.Substring(0,5) : s1.PadRight(5)
需要执行。 - Graham 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);
}
一个自定义的一行代码可以是str.Length > 5 ? str.Substring(0,5) : str.PadRight(5);
。
这将始终生成一个不超过最大宽度的字符串
public static string MaxLength(this string value, int maxWidth)
{
return (value == null) ?
String.Empty :
value.PadRight(maxWidth).Substring(0, maxWidth).TrimEnd();
}
你试过使用s1.PadLeft(5)吗?
如果你想填充其他字符,你也可以指定填充字符。
s1.PadLeft(6, '.');
会给你:"abcdef."
要做两件事:
var s1 = "1234567890";
var s2 = s1.SubString(5).PadLeft(5);
s1.SubString(5).PadLeft(5);
是 67890
;如果 s1 = "123"
则会出现 exception。 - Dmitry Bychenko