【问题标题】:How to Random generate a value like this 23-4564567如何随机生成这样的值 23-4564567
【发布时间】:2018-08-30 14:13:52
【问题描述】:

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

所以寻找一种方法来随机生成值 23-5672345 基本上是两位数然后是 - 然后是 7 位数字都在一个字符串中。

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

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

【问题讨论】:

标签: java string random


【解决方案1】:

我会生成一个长度为9String,然后在索引2 处插入-

String nineDigit = RandomStringUtils.randomNumeric(9);
StringBuilder stringBuilder = new StringBuilder(nineDigit);
String result = stringBuilder.insert(2, "-").toString();
System.out.println(result);

【讨论】:

  • @ArnaudDenoyelle 我为什么要处理这个?我认为前导零是合法的,生成的结果不是数字,而是字符串。
  • 谢谢先生,这对我的测试起到了作用,再次感谢您的知识!很受用
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    没有第三方库:

    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));
    

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

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多