我想编写一个按指定长度构建随机字符串的代码。 怎么办呢?
答案 0 :(得分:4)
以下是生成两种类型字符串的示例。
import java.security.SecureRandom;
import java.math.BigInteger;
public final class SessionIdentifierGenerator
{
private SecureRandom random = new SecureRandom();
public String nextSessionId()
{
return new BigInteger(130, random).toString(32);
}
}
输出:ponhbh78cqjahls5flbdf4dlu4
参考here
String uuid = UUID.randomUUID().toString();
System.out.println("uuid = " + uuid);
输出:281211f4-c1d7-457a-9758-555041a5ff97
参考here
答案 1 :(得分:2)
好吧,首先编写一个函数,它将为您提供满足您要求的随机字符,然后根据所需的长度将其包装在for
循环中。
以下程序提供了一种方法,使用常量字符池和随机数生成器:
import java.util.Random;
public class testprog {
private static final char[] pool = {
'a','b','c','d','e','f','g',
'h','i','j','k','l','m','n',
'o','p','q','r','s','t','u',
'v','w','x','y','z'};
private Random rnd;
public testprog () { rnd = new Random(); }
public char getChar() { return pool[rnd.nextInt(pool.length)]; }
public String getStr(int sz) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < sz; i++)
sb.append(getChar());
return new String(sb);
}
public static void main(String[] args) {
testprog tp = new testprog ();
for (int i = 0; i < 10; i++)
System.out.println (tp.getStr(i+5));
}
}
在一个特定的运行中,这给了我:
hgtbf
xismun
cfdnazi
cmpczbal
vhhxwjzbx
gfjxgihqhh
yjgiwnftcnv
ognwcvjucdnm
hxiyqjyfkqenq
jwmncfsrynuwed
现在,您可以根据不同的字符集调整字符池,甚至可以通过更改它们在数组中出现的频率来调整特定字符的偏移(e
个字符多于{z
个字符。例如{1}}。
但对于你想要做的事情来说,这应该是一个良好的开端。