2013-10-24 39 views
0

我不得不生成包含以下REG-EX如何生成使用UUID(),它以字母开头的唯一ID

^[a-zA-Z][a-zA-Z0-9.\\-_]{3,19} 

我不得不使用UUID用户名的唯一ID ()生成字符串,我已经使用户名长度为6个字符。我试图用字母替换第一个字符,它不工作。我写的代码是:

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

定义“它不工作”?它在做什么?实际结果与预期结果相比如何? – nhgrif

+0

它将名称的值附加到用户名和用户名的长度变为12个字符。结果字符串中的第一个字符不会更改为字母表。 – BegJavaPy

+1

[a-z] {0}表示你遇到一个-z字符0次......你怎么用它来替换任何东西? – Ashalynd

回答

2

你在做什么在

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

正在取代曾经的name部分与name匹配正则表达式[a-z]{0},所以有效地你用值替换从第一个空字符串name。由于第一个空字符串可以在所有字符串的开头找到,所以您将name置于name的前面,例如name"921fab"结果将为"921fab921fab"


如果要替换字符串的第一个字符与范围a-z字符,那么也许先用

Random r = new Random(); 
char c = (char) (r.nextInt(26) + 'a'); 

产生这个字符,然后将其添加到name子将包含其所有的字符开始从位置1的字符开始。

String username = c + name.substring(1); 
+0

非常感谢.. – BegJavaPy

+0

@BegJava欢迎您:) – Pshemo