【发布时间】:2020-02-16 04:24:24
【问题描述】:
如何将字符串上的文本对齐到右边?
这是我生成字符串的代码
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");来格式化字符串,但是价格没有对齐,
我希望整个价格部分正确对齐,并且值始终从同一位置开始。
【问题讨论】:
-
收据是否显示在屏幕上?还是发送到打印机?还是两者兼而有之?
-
第 1 步 - 考虑使用等宽字体。
-
这张收据被发送到打印机,我使用 font_normal = new Font("Microsoft Sans Serif Monospace", 8); //字体正常
-
如果你能分享minimal reproducible example,那就太棒了。并告诉我们有关收据如何发送到打印机的更多信息。