我正在尝试编写左对齐函数,例如:
private static string LeftJustify(string field, int len)
{
string retVal = string.empty;
///todo:
return retVal;
}
你可以帮我把逻辑放在函数中吗?
答案 0 :(得分:3)
如果您只是想填充字符串,可以直接使用String.PadRight:
private static string LeftJustify(string field, int len)
{
return field.PadRight(len);
}
答案 1 :(得分:1)
答案 2 :(得分:0)
来自C# Examples:
要将字符串向右或向左对齐,请使用静态方法
String.Format
。要将字符串对齐到左侧(右侧的空格),请使用逗号(,)后跟负数字符格式化[t] ern:String.Format("{0,–10}", text)
。要右对齐,请使用正数:{0,10}
C#:
Console.WriteLine("-------------------------------");
Console.WriteLine("First Name | Last Name | Age");
Console.WriteLine("-------------------------------");
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Bill", "Gates", 51));
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Edna", "Parker", 114));
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Johnny", "Depp", 44));
Console.WriteLine("-------------------------------");
输出:
-------------------------------
First Name | Last Name | Age
-------------------------------
Bill | Gates | 51
Edna | Parker | 114
Johnny | Depp | 44
-------------------------------
答案 3 :(得分:0)
您可以明确使用PadLeft
或像这样使用String.Format(它完成大部分数学运算)
String.Format("|{0,-10}|", field)
输出:if field =" Fred"
| Fred|
答案 4 :(得分:0)
如果你想要维持一个设定长度,并且字符串长度不同,你可以
while(retval.length <21) {retval =“”+ retval}
这将填充字符串,直到它长达20个字符。
答案 5 :(得分:0)
根据你的评论,你想用空格填充左边。 PadLeft()
适用于此,但您需要了解'totalWidth'参数:
var s = "some text";
int paddingWidth = 4;
// example for no limit on line width
s.PadLeft(s.Length + paddingWidth, ' '); // results in " someText"
但是如果允许的行长度有限制,它将产生错误的输出(即没有填充所需的字符数量)并且没有错误。您甚至可以指定小于总源字符串长度的totalWidth
。
如果您想要总是预先添加固定数量的空格,您也可以使用它:
var padding = new StringBuilder();
padding.Append(' ', 5); // replace 5 with what's useful.
var result = padding + someString;
替代空格是制表符字符,它会缩进一定量 - 通常是4个空格(取决于上下文)。这可以通过以下方式实现:
padding.Append('\t', count);
等等。
您可以将填充的逻辑放在额外的方法或扩展方法中。
注意,出于效率原因,我没有使用StringBuilder
。这很方便。
答案 6 :(得分:0)
您需要添加一些参数验证,但这应该有效。
public static class Extensions
{
static readonly char[] _whiteSpaceCharacters;
static Extensions()
{
var r = new List<char>();
for (char c = char.MinValue; c < char.MaxValue; c++)
if (char.IsWhiteSpace(c))
r.Add(c);
_whiteSpaceCharacters = r.ToArray();
}
public static string LeftJustify(this string value)
{
return value.LeftJustify(4);
}
public static string LeftJustify(this string value, int length)
{
var sb = new StringBuilder();
using (var sr = new StringReader(value))
{
string line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(
line
.TrimStart(_whiteSpaceCharacters)
.PadLeft(length, ' ')
);
}
}
return sb.ToString();
}
}
<强>输入强>
Line 1 Line 2 Line 3 Line 4
<强>输出强>
Line 1 Line 2 Line 3 Line 4