我正在制作小型销售点应用。我想在产品名称和价格之间添加空格。我在产品名称后使用debugElement.injector(SomeClass)
。问题是,如果产品名称较大,则价格不会在同一行中对齐。
请帮帮我。
答案 0 :(得分:0)
你可以按照这些方式编写方法,
public class Data
{
public string Name { get; set; }
public double Price { get; set; }
}
//Takes data list and desired lenght of merged string data
public static List<string> MergeData(List<Data> data, int maxLenght)
{
List<string> mergedData = new List<string>();
foreach (var d in data)
{
//Calculates how many spaces are needed to be inserted between Name and Price
int numberOfSpacesNeeded = maxLenght - (d.Name.Length + d.Price.ToString().Length);
//Builds new string with merged data
var sb = new StringBuilder();
sb.Append(d.Name)
.Append(' ', numberOfSpacesNeeded)
.Append(d.Price.ToString());
mergedData.Add(sb.ToString());
}
return mergedData;
}
不需要maxLength参数的第二个解决方案
public static List<string> MergeData(List<Data> data)
{
int maxLenght = data.Max(x => x.Name.Length + x.Price.ToString().Length) + 1;
List<string> mergedData = new List<string>();
foreach (var d in data)
{
string name = d.Name;
int numberOfSpacesNeeded = maxLenght - (d.Name.Length + d.Price.ToString().Length);
var sb = new StringBuilder();
sb.Append(name)
.Append(' ', numberOfSpacesNeeded)
.Append(d.Price.ToString());
mergedData.Add(sb.ToString());
}
return mergedData;
}
这两种解决方案都会将Price对齐,如果你想将它对齐到左边你应该找到价格的最大长度和RightPad其他价格以匹配它的长度,然后计算你应该在Name和Price之间添加多少空格
答案 1 :(得分:-1)
您可以缩短产品名称吗?
string str = "12345678901234567890";
str = str.Remove(15);
str = str.PadRight(45);
Console.WriteLine(str);