0

我正在尝试使 textarea 中的产品价格成为一条直线。但是,由于产品名称的长度不同,因此需要不同数量的“\t”才能使价格垂直对齐。

这是我正在尝试做的一个示例:

string text = "1X "  + "ABC Brand Drink \t\t\t\t " + price + "\n" + "2X" + 
"BCD Drink that has a longer name \t\t" + price;

我的问题是,有没有办法让我的价格在不使用所有“\t”转义序列的情况下垂直对齐?我不知道会以编程方式生成多少个“\t”来使用文本,所以我不知道如何衡量#。

这是我正在努力的示例输出: https ://imgur.com/a/kE0HJY6

我正在尝试在 HelloSign API 模板中使用它来填充自定义文本字段。

更新:到目前为止,我按照评论中的建议使用了 String.PadRight 属性,它确实有效,但价格仍未完全一致。这是当前结果的图片:https ://imgur.com/a/ZdaTqaW 。以下是我使用的代码:

 ArrayList al = new ArrayList();
        string prodName = "Try out product A and product B2";
        string price = "$620";
        string quantity = "1X";
        Product a = new Product(prodName, price, quantity);
        al.Add(a);
        string prodName2 = "Out product A and product Basdasddddddasd";
        string price2 = "$650";
        string quantity2 = "123X";
        al.Add(new Product(prodName2, price2, quantity2));
        string str = "";
        string abs = "";
        int nam, quan = 0;
        int asdsd = 0;
        foreach (Product p in al)
        {
            abs = "";
            nam = p.ProdName.Length;
            quan = p.ProdQuantity.Length;

            abs += p.ProdQuantity + " " + p.ProdName;

            //if ((nam + quan) % 2 == 0)
            //{
            //    asdsd = (175 - (nam + quan));
            //}
            //else
            //{

            //    asdsd = (175 - (nam + quan) - 1);
            //}
            asdsd = (175 - (nam + quan));

            str += abs.PadRight(asdsd) + p.ProdPrice + "\n\n";

请忽略变量的名称,我会在一切完成后更改它们。

4

1 回答 1

0

您不需要制表符,您只需要知道每列中最长的文本,然后根据您想要的对齐方式简单地向右或向左填充。伪代码如下:

foreach value in each column
    find longest length

foreach value in each column
    add to text: current value padded left longest length - actual length // right alingment
        or
    add to text: current value padded right longest length - actual length // left alingment
        + whatever addtional spacing you want in between columns.

你已经完成了。当然,如果您事先知道每列的最大预期长度,那么您可以跳过整个第一步。

您正在寻找的方法是:

于 2018-12-29T10:41:14.637 回答