【发布时间】:2017-08-23 03:19:39
【问题描述】:
是否有一种将string 设置为固定长度(在C# 中)的单行方式,通过截断 或填充 em> 带有空格 (' ')。
例如:
string s1 = "abcdef";
string s2 = "abc";
将两者都设置为长度5后,我们应该有:
"abcde"
"abc "
【问题讨论】:
是否有一种将string 设置为固定长度(在C# 中)的单行方式,通过截断 或填充 em> 带有空格 (' ')。
例如:
string s1 = "abcdef";
string s2 = "abc";
将两者都设置为长度5后,我们应该有:
"abcde"
"abc "
【问题讨论】:
我会使用@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);
}
【讨论】:
(此答案之前包含错误代码,如 cmets 中所引用。)
一个自定义的单行代码是str.Length > 5 ? str.Substring(0,5) : str.PadRight(5);。
【讨论】:
您只需要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, ' ');
}
【讨论】:
s1.Length > 5 ? s1.Substring(0,5) : s1.PadRight(5) 将不得不这样做
你试过了吗 s1.PadLeft(5);
如果你想要空格以外的东西,你也可以指定填充字符
s1.PadLeft(6, '.');
会给你:“abcdef。”
两者都做:
var s1 = "1234567890";
var s2 = s1.SubString(5).PadLeft(5);
【讨论】:
s1.SubString(5).PadLeft(5); 是 67890;和 exception 如果s1 = "123"