修改
显然人们实际上并没有阅读这个问题。我意识到我可以使用正则表达式进行模式匹配。这就是我的示例代码所做的,主要的问题是模式填充和处理很好,而不必将正则表达式分解为它的单个令牌并找出数字应该是什么样子。我可以毫无问题地写出来。我只是想看看其他人是否已经以更优雅的方式解决了这个问题。
我正在处理一个项目,该项目需要接受一个字符串并检查它是否与模式匹配,并且还能够采用该模式并在需要时填写该值。我可以使用正则表达式和强制特定的正则表达式格式一起破解它,但我很好奇是否有一个可以执行此操作的预先存在的框架/库。
我的需求很简单,所以我不需要它来处理任何可能的字符串。只是像这样的基本格式:
String pattern "\\d\\d\\d\\d";
String testString = "123";
testString.matches(pattern); // False
String filledOutString = fillOutStringFromPattern(testString);
filledOutString.equals("0123"); // True
有一点需要注意的是,它可能并不总是只有数字,所以它不像将数据转换为数字然后用填充打印数字那么简单。
现在我的计划只是强迫人们仅使用\d\d\d
而不是\d{3}
来加入正则表达式模式然后只是做一些非常简单的正则表达式分割,但在我开始之前这样做是为了确保没有更好的方法来做到这一点。
答案 0 :(得分:2)
您可以使用 Xeger 根据模式生成/填充字符串。
这是一个有趣的例子:
String regex = "[ab]{4,6}c";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);
对于您的情况,您可以使用:
String regex = "\\d{4}";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);