如何使用以字母表开头的UUID()生成唯一ID

时间:2013-10-24 23:58:54

标签: java string

我必须为包含以下注册表

的用户名生成唯一ID
^[a-zA-Z][a-zA-Z0-9.\\-_]{3,19}

我必须使用UUID()来生成字符串,并且我的用户名长度为6个字符。我试图用字母替换第一个字符,它不起作用。我写的代码是:

String unique = UUID.randomUUID().toString();
String name = unique.substring(30);
String username = name.replaceFirst("[a-z]{0}", name));

1 个答案:

答案 0 :(得分:2)

你在做什么

String username = name.replaceFirst("[a-z]{0}", name));

正在替换匹配正则表达式name [a-z]{0}的{​​{1}}部分,因此您有效地将第一个空字符串替换为name的值。由于在name前面name所有字符串的开头都可以找到第一个空字符串,例如name name结果将为"921fab"


如果你想用字符"921fab921fab"中的字符替换字符串的第一个字符,那么可能首先用

生成这个字符
a-z

然后将其添加到Random r = new Random(); char c = (char) (r.nextInt(26) + 'a'); 的子字符串中,该子字符串将包含从位置1的字符开始的所有字符。

name