如何随机生成一个像这样的值23-4564567

时间:2018-08-30 14:13:52

标签: java string random

我正在寻找如何随机生成类似23-3455673的值。我的问题是我不确定如何在随机数字代码中间获取-。 我正在使用Maven Java项目并使用RandomStringUtils.randomnumeric(10)

因此,正在寻找一种方法来随机生成该值,即23-5672345,基本上是两位数,然后是-然后是7个数字。

我在这里不是很熟练,所以我真的不是在寻找技术性高的答案,只是我正在寻找的最简单的方法来完成这项工作。

预先感谢您提供有关如何完成此操作的建议。

3 个答案:

答案 0 :(得分:1)

我将生成一个长度为String的{​​{1}},然后在索引9处插入-

2

答案 1 :(得分:1)

我不确定“在行家中”是什么意思,但是当您使用RandomStringUtils.randomnumeric(10)时可以使用

 StringBuilder sb =new StringBuilder(RandomStringUtils.randomNumeric(2)).append("-").append(RandomStringUtils.randomNumeric(7))
 String result=sb.toString()
 System.out.println(result);

答案 2 :(得分:0)

没有第三方库:

1)简单的解决方案:生成2位数字,然后附加-然后生成7位数字:

Random random = new Random();

StringBuilder sb = new StringBuilder();
//Append a number between [0; 10[
sb.append(random.nextInt(10));
sb.append(random.nextInt(10));
sb.append('-');
for (int i = 0; i < 7; i++) {
    sb.append(random.nextInt(10));
}
System.out.println(sb);

输出:

  

77-5711939

2)简洁的解决方案:生成一个9位数的字符串。

random.nextInt(1_000_000_000)

,但是如果生成的值小于100_000_000,则不能保证您有9位数字。因此,您将使用String.format()填充值:

// %09d imposes 9 digits. 0 are added if necessary.
// String.format("%09d", 42) returns 000000042
String result = String.format("%09d", random.nextInt(1_000_000_000));

然后,您可以在第二个位置插入-