我必须为包含以下注册表
的用户名生成唯一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));
答案 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