functional-programming - 如何在 Racket 中编写一个不带条件填充数字的函数?
问题描述
我需要编写一个函数,它消耗一个 Nat 并返回一个 Str,填充为三位数。
例子:
(pad3 7) => "007"
(pad3 42) => "042"
(pad3 245) => "245"
(pad3 3141592) => "314"
有小费吗?
解决方案
在 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))
推荐阅读
- python - 如何计算平均值,如果我的列表里面有另一个列表?
- python - 数据库中的上标转换为 \u00b2
- python - Google Cloud Dataflow - 来自 PubSub 消息的 Pyarrow 架构
- javascript - 刷新后将项目添加到本地存储时,我会丢失其他项目
- javascript - Select2js 将通过 ajax 调用获得的结果与用户输入分开
- jquery - jQuery,一个接一个地启动一堆异步调用
- typo3 - TYPO3 10.4 - 找不到区域设置“en_US.UTF-8”
- splunk - Splunk 索引和空间使用
- python - 熊猫 - 处理 NaN
- python - 使用混合语法设置多个主键