You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用test.check编写生成纯字母字符串的自定义生成器

test.check 自定义纯字母字符串生成器实现方案

推荐实现(性能最优)

直接基于内置的单字符字母生成器gen/char-alpha拼接实现,无过滤开销,稳定性最高:

(require '[clojure.test.check.generators :as gen]
         '[clojure.string :as str])

;; 生成任意长度的纯字母字符串
(def string-alpha
  (gen/fmap str/join (gen/vector gen/char-alpha)))

;; 如果需要限定字符串长度范围,比如2-15位,修改gen/vector参数即可
(def string-alpha-2-15
  (gen/fmap str/join (gen/vector gen/char-alpha 2 15)))

说明:

  • gen/char-alpha是test.check内置生成器,仅输出大小写英文字母,不含数字、符号
  • gen/vector将单字符生成器封装为指定长度范围的字符序列生成器,不传长度参数时默认生成0到20个元素的序列
  • gen/fmap对生成的字符序列执行str/join操作,拼接为最终字符串

备选实现(过滤法,不推荐长字符串场景)

如果想基于现有gen/string-alphanumeric实现,也可以通过正则过滤掉包含数字的结果,仅适合生成短字符串场景,长字符串容易触发生成重试上限报错:

(def string-alpha
  ;; 第三个参数为最大重试次数,默认10次,这里调整为100降低报错概率
  (gen/such-that #(not (re-find #"\d" %)) gen/string-alphanumeric 100))

内容的提问来源于stack exchange,提问作者triplej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:00:00