別の回答からStringBuilderを使用していますが、英数字、空白、句読点など以外は使用できません。このコードで文字セットを制限する方法を説明できますか?また、常に30文字の長さであることを保証するにはどうすればよいですか?
Random generator = new Random();
StringBuilder stringBuilder = new StringBuilder();
int Length = 30;
char tempChar ;
for (int i = 0; i < Length; i++){
tempChar = (char) (generator.nextInt(96) + 32);
stringBuilder.append(tempChar);
私は他のほとんどの答えを見てきましたが、これに対する解決策を見つけることができません。ありがとう。これが重複している場合は、私に怒鳴らないでください。ほとんどの回答は、コードのどの部分が生成された数値の長さや文字セットを調整する場所を制御するかを説明していません。
StringBuilder.Replace( ''、 '1')も試しましたが、これは機能した可能性がありますが、EclipseはStringBuilderのReplaceのメソッドがないと言っています。
文字セットと長さを制御したい場合は、たとえば
public static String randomString(char[] characterSet, int length) {
Random random = new SecureRandom();
char[] result = new char[length];
for (int i = 0; i < result.length; i++) {
// picks a random index out of character set > random character
int randomCharIndex = random.nextInt(characterSet.length);
result[i] = characterSet[randomCharIndex];
}
return new String(result);
}
と組み合わせる
char[] CHARSET_AZ_09 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
文字セットを指定します。
長さがわかっていて、すべてのオーバーヘッドを必要としないため、StringBuilder
に基づいていません。
正しいサイズのchar[]
配列を割り当て、その配列の各セルに入力配列からランダムに選択された文字を入力します。
ここで使用するその他の例: http://ideone.com/xvIZcd
これが私が使うものです:
public static String randomStringOfLength(int length) {
StringBuffer buffer = new StringBuffer();
while (buffer.length() < length) {
buffer.append(uuidString());
}
//this part controls the length of the returned string
return buffer.substring(0, length);
}
private static String uuidString() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
あなたはこれを試すことができます:
//piece
int i = 0;
while(i < length){
char temp =(char) (generator.nextInt(92)+32);
if(Character.isLetterOrDigit(temp))
{
stringBuilder.append(temp);
++i;
}
}
System.out.println(stringBuilder);
あなたの目標を達成する必要があります