当前位置: 首页 > 知识库问答 >
问题:

java使用正则表达式生成字符串[重复]

糜雪峰
2023-03-14

我想生成具有此表单的随机字符串

[A-Za-z0-9]{5,10}

我不知道怎么做,我应该用正则表达式还是随机函数?

共有3个答案

裘安阳
2023-03-14

您可以使用RandomStringUtils。randomAlphanumeric(int count)位于Apache的commons lang库中,每次指定不同的count参数(从5到10)

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/RandomStringUtils.html#randomAlphanumeric(int)

齐高寒
2023-03-14

您不能使用regex(在Java中)来生成东西。

您需要使用“随机”数字生成器(例如,“随机”类)来生成随机字符的随机数(介于5到10之间)(在指定的集合中)事实上,Java提供了不止一个生成器。。。取决于随机性的重要性。(Random类使用一个简单的伪随机数生成器算法,它生成的数字是可预测的……)

我怀疑这是一个“学习练习”,所以我不会提供代码。(如果这不是一个学习练习,你无论如何都应该能够自己写出来……)

桂高昂
2023-03-14

在这种情况下,我坚持使用Java解决方案,大致如下:

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

您可以使用getRandomValue(5,10)调用它

我没有尝试过此代码,因为我没有可用的IDE

请注意,如果您不习惯使用第三方库,那么有许多可用库。

 类似资料:
  • 关于正则表达式有很多类似的问题,但我仍然对以下情况感到困惑:

  • 问题内容: 我有这串 并且我需要提取这3个子字符串 1234 06:30 07:45 如果我使用此正则表达式\\ d {2} \:\\ d {2}我只能提取第一个小时的06:30 matcher.group(1)引发异常。 另外我也不知道如何提取1234。此字符串可以更改,但总是在’XX〜’之后 。您对如何将这些字符串与正则表达式匹配有任何想法吗? 更新 多亏了亚当的建议,我现在有了这个正则表达式

  • 我需要一个只有文字的明文,不包括所有数字、额外空格、破折号、逗号、点、括号等。它用于文字生成算法(取自gamasutra)。我想正则表达式在这里会有所帮助。我如何在String.split的帮助下做到这一点? UPD: 输入:我有1337这样一个字符串,其中包含不同的内容:逗号、许多空格、数字-2 3 4、破折号。如何删除所有内容? 输出:我有这样一个字符串,里面有不同的东西,逗号,很多空格,数字

  • 我有一个包含数千行的文本文件。这里有一个例子 我试图提取'nt60'、'nt50'末尾的字符串。 问题是会包含行尾字符() 我想使用正则表达式搜索来匹配从 (') 开始的字符串,但我不知道我应该用什么来匹配 。 有人能帮忙吗?

  • 我的正则表达式是 当我在java中使用Pattern.complie()编译时,我得到了*非法重复字符* 我测试了这个正则表达式 当我编译这个时,它没有显示错误。 为什么会发生这种情况?

  • 问题内容: 有什么方法可以使用正则表达式将字符串格式化为特定模式,还是stringbuilder +子字符串是一种更快的方法? 例如,说出电话号码-> 1234567890作为输入 并输出为->(123)456-7890 我看到有可能在这篇文章上:http : //www.4guysfromrolla.com/webtech/031302-1.shtml,但给出的解释在ASP中。我如何用Java做