. net String。格式方法允许将字符串放置在固定长度的字符串中的固定位置。
" String Goes Here" " String Goes Here " "String Goes Here "
使用.NET是如何做到这一点的?
编辑-我已经尝试格式/左/右PadRight死亡。它们不起作用。我不知道为什么。最后我写了自己的函数来做这个。
编辑-我犯了一个错误,在格式说明符中使用了冒号而不是逗号。应该是“{0,20}”。
感谢所有精彩而正确的回答。
. net String。格式方法允许将字符串放置在固定长度的字符串中的固定位置。
" String Goes Here" " String Goes Here " "String Goes Here "
使用.NET是如何做到这一点的?
编辑-我已经尝试格式/左/右PadRight死亡。它们不起作用。我不知道为什么。最后我写了自己的函数来做这个。
编辑-我犯了一个错误,在格式说明符中使用了冒号而不是逗号。应该是“{0,20}”。
感谢所有精彩而正确的回答。
当前回答
/// <summary>
/// Returns a string With count chars Left or Right value
/// </summary>
/// <param name="val"></param>
/// <param name="count"></param>
/// <param name="space"></param>
/// <param name="right"></param>
/// <returns></returns>
public static string Formating(object val, int count, char space = ' ', bool right = false)
{
var value = val.ToString();
for (int i = 0; i < count - value.Length; i++) value = right ? value + space : space + value;
return value;
}
其他回答
你已经学过左键和右键了。这将填补缺失的PadCenter。
public static class StringUtils
{
public static string PadCenter(this string s, int width, char c)
{
if (s == null || width <= s.Length) return s;
int padding = width - s.Length;
return s.PadLeft(s.Length + padding / 2, c).PadRight(width, c);
}
}
提醒自己:别忘了更新自己的简历:“有一天,我甚至修正了Joel Coehoorn的代码!”, - d哔叽
试试这个:
"String goes here".PadLeft(20,' ');
"String goes here".PadRight(20,' ');
对于中心,获取字符串的长度,并使用必要的字符进行左padleft和右padright操作
int len = "String goes here".Length;
int whites = len /2;
"String goes here".PadRight(len + whites,' ').PadLeft(len + whites,' ');
从Visual Studio 2015开始,你也可以使用Interpolated Strings(这是一个编译器的技巧,所以你的目标是哪个版本的。net框架并不重要)。
string value = "String goes here";
string txt1 = $"{value,20}";
string txt2 = $"{value,-20}";
感谢讨论,这个方法也可以(VB):
Public Function StringCentering(ByVal s As String, ByVal desiredLength As Integer) As String
If s.Length >= desiredLength Then Return s
Dim firstpad As Integer = (s.Length + desiredLength) / 2
Return s.PadLeft(firstpad).PadRight(desiredLength)
End Function
StringCentering() takes two input values and it returns a formatted string. When length of s is greater than or equal to deisredLength, the function returns the original string. When length of s is smaller than desiredLength, it will be padded both ends. Due to character spacing is integer and there is no half-space, we can have an uneven split of space. In this implementation, the greater split goes to the leading end. The function requires .NET Framework due to PadLeft() and PadRight(). In the last line of the function, binding is from left to right, so firstpad is applied followed by the desiredLength pad.
下面是c#版本:
public string StringCentering(string s, int desiredLength)
{
if (s.Length >= desiredLength) return s;
int firstpad = (s.Length + desiredLength) / 2;
return s.PadLeft(firstpad).PadRight(desiredLength);
}
为了帮助理解,这里使用了整数变量firstpad。s.PadLeft(firstpad)应用前导空白(正确数量)。最右边的PadRight(desredlength)通过应用尾随空格来完成较低的绑定。
这将给你你所需要的字符串:
string s = "String goes here";
string lineAlignedRight = String.Format("{0,27}", s);
string lineAlignedCenter = String.Format("{0,-27}",
String.Format("{0," + ((27 + s.Length) / 2).ToString() + "}", s));
string lineAlignedLeft = String.Format("{0,-27}", s);