使用格式的方案完整填充示例

Lu *_* Ma 6 scheme racket

所有

我想将元素更改为格式化字符串,然后我使用格式化函数.(我使用的语言是方案)

正如http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Format.html中的文档所述,如果我想在右边插入空格,我可以使用~mincolA.

所以我用

(format "~4A " x) 
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误:

format: ill-formed pattern string
  explanation: tag `~4' not allowed
  pattern string: "~4A "
Run Code Online (Sandbox Code Playgroud)

我想得到如下结果:

如果x为0,则结果为空间空间0;

如果x是12,则结果是空间12.

我知道我可以使用

(string-append (make-string (- 4 (string-length x)) #\ ) x)
Run Code Online (Sandbox Code Playgroud)

得到我想要的结果,但我真的想要使用"格式"功能.

谢谢.

Ósc*_*pez 5

请注意,参考文档是针对 MIT/GNU Scheme 的,该format功能在 Racket 中的工作方式不同。开箱即用,您可以使用该~a功能实现相同的效果:

(~a x #:min-width 4 #:align 'right #:left-pad-string " ") ; x can be a number or a string
Run Code Online (Sandbox Code Playgroud)

例如:

(~a 0 #:min-width 4 #:align 'right #:left-pad-string " ")
=> "   0"

(~a "12" #:min-width 4 #:align 'right #:left-pad-string " ")
=> "  12"
Run Code Online (Sandbox Code Playgroud)

如果您不介意导入额外的外部库,@uselpa 的答案是准确的。