java - Java生成词表
问题描述
我在这个主题上停留了大约 3 天,我想不出一个合适的算法。所以你们能帮帮我吗?
我想生成具有给定字符集、最小和最大长度的词表
给定charset:abcdef min:2 max:5
结果:
aa
ab
ac
...
ffffd
ffffe
fffff
像 linux 命令行crunch
。
但是有一点,我需要在 for 循环中进行此操作,这与循环次数无关,但在不调用任何用户自定义函数的情况下很重要*.
喜欢:
for (...) {
// Password is ready!
pass = ...;
}
不喜欢:
pass = get_pass(...);
谢谢你。
解决方案
一种方法是使用一个库,它从给定的正则表达式(如Generex)创建字符串。使用 Generex,您的任务很简单:
import com.mifmif.common.regex.Generex;
public class Example {
public static void main(String[] args) {
Generex gen = new Generex("[abcdef]{2,5}");
gen.getAllMatchedStrings().forEach(System.out::println);
}
}
输出:
aa
aaa
aaaa
aaaaa
aaaab
aaaac
aaaad
aaaae
aaaaf
...
...
ffffa
ffffb
ffffc
ffffd
ffffe
fffff
请参阅此帖子以了解其他库,例如generex using-regex-to-generate-strings-rather-than-match-them
推荐阅读
- umbraco - Umbraco 8 禁用 TidyEditorContent
- amazon-web-services - AWS 步骤函数和可选参数
- java - 在 WebView 中加载文件的路径问题
- graphql - 使用 GraphQL、Graphene 和 Python 从查询中返回任何数据
- mysql - Visual Studio 2013 中缺少 MySQL 数据源
- generics - 针对特定情况 F 缺少 HKT 的解决方法
对于一个 F - c# - 使用 Task.WhenAll() 的多个请求
- ms-access-2016 - 为什么 upd null 病态查询不再起作用?
- python - 使用 For 循环对 Pandas DataFrame 进行排序和重新排列
- python - 根据现有列中的值将随机值分配给数据框列