如何在榆树中生成可表示的ascii字符?

时间:2017-10-07 14:41:12

标签: elm

我正在玩榆树并创建一个密码生成器作为玩具练习。努力在ascii'中生成字符。这是"可打印"。目前我正在使用以下命令:

 Random.generate NewRandomChar (Random.Char.ascii))

但这会产生许多不可打印的字符(例如NUL)。如果我使用Random.Char.latin,我不会得到像感叹号这样的数字或符号,因此密码生成器不是很好。 是否有一种简单的方法可以在ascii范围dec33到dec126中获得一个字符?

谢谢!

完整代码:https://github.com/jumpifzero/snippets/blob/master/experiments/elm/pwd-generator.elm

编辑: 为了完整起见,我添加了一个简单的谓词来检查角色是否在所需范围内但不喜欢解决方案:/任何帮助清理这个赞赏! https://github.com/jumpifzero/snippets/blob/master/experiments/elm/pwd-generator2.elm

1 个答案:

答案 0 :(得分:2)

您正在使用elm-community/random-extra包,其中包含使用char在给定范围内的随机字符生成器:

Random.generate NewRandomChar (Random.Char.char 33 126))

您可以轻松滚动自己的功能,而无需额外的包装:

import Char exposing (fromCode)
import Random exposing (Generator, map, int)

passwordCharGenerator : Generator Char
passwordCharGenerator =
    map fromCode (int 33 126)