随机字符串
原始需求:请求中有一个可选参数,如果没有带需要后端随机生成一个,而且要满足给定正则表达式的校验,并返回在响应的body中。
需求分解:
1.随机生成一个字符串
2.满足给定的正则表达式
网上查询,有一个 Xeger 的类可以实现,代码如下:
import nl.flotsam.xeger.Xeger;
public class XegerTest {
public static void main(String[] args)
{
String regex = "^[a-zA-Z0-9-]{1,64}$";
Xeger generator = new Xeger(regex);
String result = generator.generate();
}
}
但是鉴于当时公司的开源软件库中没有这个包,无法使用 Xeger 类。
于是,用下面的方式替代:
private String allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGRHIJKLMNOPQRSTUVWXYZ0123456789-";
public String getRandomValue(int min, int max) {
Random random = new Random();
int length = random.nextInt(max - min + 1) + min;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < length; i++) {
sb.append(allowedChars.charAt(random.nextInt(allowedChars.length())));
}
return sb.toString();
}
min和max表示字符串的最小、最大长度。