我正在尝试使用特殊字符生成随机数
我对简单整数所做的是
Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt();
我该怎么做才能在我的随机数中得到这样的东西
String salt = "Random$SaltValue#WithSpecialCharacters12@$@4&#%^$*";
谢谢
我正在尝试使用特殊字符生成随机数
我对简单整数所做的是
Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt();
我该怎么做才能在我的随机数中得到这样的东西
String salt = "Random$SaltValue#WithSpecialCharacters12@$@4&#%^$*";
谢谢
您可以尝试以下方法:
编码:
final String alphabet = "<Your special characters>";
final int N = alphabet.length();
Random rd = new Random();
int iLength = <length you want>;
StringBuilder sb = new StringBuilder(iLength);
for (int i = 0; i < iLength; i++) {
sb.append(alphabet.charAt(rd.nextInt(N)));
}
如果您乐于使用第三方库,您可能会发现RandomStringUtils
Apache Commons Lang 的课程很有帮助。
您可以指定允许的字符集(或使用所有可用字符)。
import java.util.*;
class Test {
static Random r = new Random();
static char[] choices = ("abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"01234567890" +
"$#_").toCharArray();
public static String getSalt(int len) {
StringBuilder salt = new StringBuilder(len);
for (int i = 0; i<len; ++i)
salt.append(choices[r.nextInt(choices.length)]);
return salt.toString();
}
public static void main(String[]_) {
System.out.println(getSalt(32));
}
}
示例输出:vdq5L6bANFIQH_MUyKyZxLcOkJeB3uJ1
如果你想生成这个http://en.wikipedia.org/wiki/Special_characters特殊字符然后试试这个
char c = (char) (randomGenerator.nextInt(0xB4 - 21 + 1) + 21);
String alphabet = "here specify all the characters you want";
final int N = alphabet.length();
Random r = new Random();
String finalStr= "";
for (int i = 0; i < 50; i++) {
finalStr+=alphabet.charAt(r.nextInt(N));
}