Context
我想生成可以通过以下方式生成的所有字符:
- 打开记事本
- 按键盘上的单个键
- 按住 Shift + 按键盘上的单个键
我目前拥有的:
(concat (range (int \a) (int \z))
(range (int \A) (int \Z))
(range (int \0) (int \9)))
然后手动附加更多字符,例如 ~!@#$%^&*()_+{}|:"?,./;'[]\
Question
有没有更优雅的方法来做到这一点?
Edits
是的,我指的是美国 Qwerty 键盘。
如果你看一个美国 ASCII 图表 http://www.asciitable.com/,看来你想要的角色都在里面(range 33 127)
。因此,获取所有这些字符的序列的最简单方法就是将该范围转换为字符。
(map char (range 33 127))
但是,如果您尝试验证字符串是否仅包含这些字符,请使用如下函数:
(defn valid-char? [c]
(let [i (int c)]
(and (> i 32) (< i 127))))
然后你可以使用它every?
验证字符串:
user=> (every? valid-char? "hello world")
true
user=> (every? valid-char? "héllo world")
false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)