1

我正在尝试对齐列值,但它们的长度不同。我不能只使用Print '123' (+1, 9)thenPrint '123456' (+1, 9)因为它看起来像这样:

123456790123456790123456790123456790123456790123456790 <- Ignore this line
       123
       123456

注意最右边的数字是如何不一致的。我希望输出是这样的:

123456790123456790123456790123456790123456790123456790 <- Ignore this line
     123
  123456

所以我想在某个索引处停止打印。我将如何使用 SQR 实现这一目标?

我试过了Print '123' (+1, 9)Print '1234' (+1, 9)但它给出了错误的结果。

4

2 回答 2

1

我不熟悉 SQR,但这里有一个建议:因为 SQR 支持 LPAD 函数(请参阅字符串函数):

使用 pad_value 将左侧的 source_value 填充到 length_value 的长度并返回结果。

语法:dst_var = lpad(source_value, length_value, pad_value)

您可以将其应用于您打印的字符串。例如(再一次:注意我不知道 SQR,你可能需要调整它):

Print lpad('123', 6, ' ') (+1, 9)

这将使...123(每个点代表一个空间)。

为什么 LPAD 长度为 6 个字符?好吧,因为您的另一个字符串 ('123456') 有 6 个字符长。如有必要,请更改它。

于 2018-03-02T16:56:15.993 回答
0

首先,看起来您想结束第 9 列中的值。lPad 函数对此不起作用,因为 (+1,9) 在第 9 列中表示 START。此外,您不能将 lPad 函数放入打印声明。

而是使用从第 1 列开始的 print 的 Edit 参数:

Print 123    (+1,1) edit 999999999
Print 123456 (+1,1) edit 999999999

现在这对数字很有效,但它也适用于字符串,只要它们包含数字。所以这也有效:

Print '123'    (+1,1) edit 999999999
Print '123456' (+1,1) edit 999999999

我已经在 SQR 中测试了这些语句并且它们有效,但是,这会产生丑陋的结果:

Print 'ABC'    (+1,1) edit 999999999
Print 'ABCDEF' (+1,1) edit 999999999

如果您必须打印字符串而不是数字,则使用 lPad 命令格式化变量:

Let $String = lPad($String, 9, ' ')
Print $String (+1,1) ! <--- start at column 1
于 2018-03-04T22:12:59.743 回答