0

次の正規表現を含むユーザー名の一意の 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));
4

1 に答える 1

3

あなたがしていること

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

正規表現にname一致する の一部を で 1 回置き換えているため、効果的に最初の空の文字列を からの値に置き換えています。最初の空の文字列はすべての文字列の先頭にあるため、たとえば結果のように前に配置します。[a-z]{0}namenamenamenamename "921fab""921fab921fab"


文字列の最初の文字を範囲内の文字に置き換えたい場合は、a-z最初にこの文字を生成します

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

name次に、位置1の文字から始まるすべての文字を含む部分文字列に追加します。

String username =  c + name.substring(1);
于 2013-10-25T00:19:01.067 に答える