收据上的字符串对齐
String alignment on receipt
如何将字符串中的文字右对齐?
这是我生成字符串的代码
for (int i = 0; i <= qtd_itens - 1; i++)
{
String adicionais = dados_msg[i].addon;
//A soma do pedido + os pontos devem dar 63 caracteres 80mm
int qtd_pontos = 0;
int qtdLinhaPedido = 0;
String LinhaPedido = Quantidade + "x " + item + " - " + preco + "\n";
qtdLinhaPedido = LinhaPedido.Length;
qtd_pontos = 80 - qtdLinhaPedido;
DadosPedido = String.Format("{0,-10}{1,"+qtd_pontos+"}", DadosPedido + Quantidade + "x " + item + " ", preco + "\n");
if (adicionais.Length > 10)
{
}
else {
DadosPedido = DadosPedido + "\n";
}
// using the method
String[] strlist = adicionais.Split('}');
foreach (String s in strlist)
{
String Addon = s.Replace("[", "").Replace("]", "").Replace("{", "").Replace("}","").Replace(",\"addon_name","\"addon_name");
Addon = "{" + Addon + "}";
if (Addon.Length > 15)
{
dynamic JsonAddon = JObject.Parse(Addon);
String Item = JsonAddon.addon_name;
String Qtd = JsonAddon.addon_qty;
double Preco_AddonF = JsonAddon.addon_price;
Preco_AddonF = Double.Parse(Qtd) * Preco_AddonF;
string preco_addon = Preco_AddonF.ToString("C", CultureInfo.CurrentCulture);
int qtdLinhaPedido = 0;
String LinhaPedido = Qtd + "x " + Item + " " + preco_addon + "\n";
qtdLinhaPedido = LinhaPedido.Length;
qtd_pontos = 80 - qtdLinhaPedido;
DadosPedido = String.Format("{0,-10}{1," + qtd_pontos + "}", DadosPedido + " - " + Qtd + "x " + Item + " ", preco_addon+ "\n");
}
}
DadosPedido = DadosPedido + "\n";
if (Instrucao_item.Length > 5)
{
DadosPedido = DadosPedido+"Obs: " + Instrucao_item+ "\n\n";
}
其实我是用String.Format("{0,-10}{1," + qtd_pontos + "}",DadosPedido + Quantidade + "x " + item + " ("+ tamanho + ") ", preco + "\n");
格式化字符串,但是价格不一致,
我希望整个价格部分右对齐并且值始终从同一位置开始。
只有使用 monospaced font 才能用 String.Format
完成。
如何将字符串中的文字右对齐?
这是我生成字符串的代码
for (int i = 0; i <= qtd_itens - 1; i++)
{
String adicionais = dados_msg[i].addon;
//A soma do pedido + os pontos devem dar 63 caracteres 80mm
int qtd_pontos = 0;
int qtdLinhaPedido = 0;
String LinhaPedido = Quantidade + "x " + item + " - " + preco + "\n";
qtdLinhaPedido = LinhaPedido.Length;
qtd_pontos = 80 - qtdLinhaPedido;
DadosPedido = String.Format("{0,-10}{1,"+qtd_pontos+"}", DadosPedido + Quantidade + "x " + item + " ", preco + "\n");
if (adicionais.Length > 10)
{
}
else {
DadosPedido = DadosPedido + "\n";
}
// using the method
String[] strlist = adicionais.Split('}');
foreach (String s in strlist)
{
String Addon = s.Replace("[", "").Replace("]", "").Replace("{", "").Replace("}","").Replace(",\"addon_name","\"addon_name");
Addon = "{" + Addon + "}";
if (Addon.Length > 15)
{
dynamic JsonAddon = JObject.Parse(Addon);
String Item = JsonAddon.addon_name;
String Qtd = JsonAddon.addon_qty;
double Preco_AddonF = JsonAddon.addon_price;
Preco_AddonF = Double.Parse(Qtd) * Preco_AddonF;
string preco_addon = Preco_AddonF.ToString("C", CultureInfo.CurrentCulture);
int qtdLinhaPedido = 0;
String LinhaPedido = Qtd + "x " + Item + " " + preco_addon + "\n";
qtdLinhaPedido = LinhaPedido.Length;
qtd_pontos = 80 - qtdLinhaPedido;
DadosPedido = String.Format("{0,-10}{1," + qtd_pontos + "}", DadosPedido + " - " + Qtd + "x " + Item + " ", preco_addon+ "\n");
}
}
DadosPedido = DadosPedido + "\n";
if (Instrucao_item.Length > 5)
{
DadosPedido = DadosPedido+"Obs: " + Instrucao_item+ "\n\n";
}
其实我是用String.Format("{0,-10}{1," + qtd_pontos + "}",DadosPedido + Quantidade + "x " + item + " ("+ tamanho + ") ", preco + "\n");
格式化字符串,但是价格不一致,
我希望整个价格部分右对齐并且值始终从同一位置开始。
只有使用 monospaced font 才能用 String.Format
完成。