首页 > 解决方案 > 如何在 Racket 中编写一个不带条件填充数字的函数?

问题描述

我需要编写一个函数,它消耗一个 Nat 并返回一个 Str,填充为三位数。

例子:

(pad3 7) => "007"
(pad3 42) => "042"
(pad3 245) => "245"
(pad3 3141592) => "314"

有小费吗?

标签: functional-programmingracket

解决方案


在 Racket 中,您可以~r在控制填充、最小宽度等的同时将数字转换为字符串,如下所示:

(~r 7 #:min-width 3 #:pad-string "0")
=> "007"

但是,由于您还想设置一个 max-width 来切断左起第三个位置之后的任何数字,您可以substring按如下方式应用到新转换的字符串:

(substring (~r 3141592 #:min-width 3 #:pad-string "0") 0 3)
=> "314"

这是一个示例pad3实现:

(define (pad3 num)
  (substring (~r num #:min-width 3 #:pad-string "0") 0 3))

推荐阅读