问题
我想要一个有效的实用程序来生成唯一的字节序列。 UUID是一个很好的候选者,但UUID.randomUUID().toString()生成像44e128a5-ac7a-4c9a-be4c-224b6bf81b20这样的东西,只要你不需要通过HTTP传输就可以了,在这种情况下需要删除破折号。
我正在寻找一种生成随机字符串的有效方法,只能使用字母数字字符(无破折号或任何其他特殊符号)。
#1 热门回答(177 赞)
这样做:
public static void main(String[] args) {
final String uuid = UUID.randomUUID().toString().replace("-", "");
System.out.println("uuid = " + uuid);
}
#2 热门回答(26 赞)
你可以在此线程的URL中看到,不需要从HTTP请求中删除虚线。但是,如果要在不依赖数据的情况下准备格式良好的URL,则应使用URLEncoder.encode(字符串数据,字符串编码),而不是更改数据的标准格式。对于UUID字符串表示,破折号是正常的。
#3 热门回答(10 赞)
我使用JUG(Java UUID Generator)生成唯一ID。它在JVM中是独一无二的。非常好用。以下是供你参考的代码:
private static final SecureRandom secureRandom = new SecureRandom();
private static final UUIDGenerator generator = UUIDGenerator.getInstance();
public synchronized static String generateUniqueId() {
UUID uuid = generator.generateRandomBasedUUID(secureRandom);
return uuid.toString().replaceAll("-", "").toUpperCase();
}