关于Java的用于特殊字符的随机数生成器

random number generator for special characters

本问题已经有最佳答案,请猛点这里访问。

我正在尝试生成带有特殊字符的随机数

我对简单整数所做的是

1
2
Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt();

在我的随机数中我能做些什么来得到这样的东西

1
String salt ="Random$SaltValue#WithSpecialCharacters12@$@4&#%^$*";

谢谢


您可以尝试以下操作:

  • 初始化特殊字符集。
  • 创建一个StringBuilder来包含所需的字符串。
  • 获取随机字符并附加到StringBuilder对象。

代码:

1
2
3
4
5
6
7
8
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)));
}


如果您愿意使用第三方库,您可能会发现ApacheCommonsLang的RandomStringUtils类很有用。

您可以指定允许的字符集(或使用所有可用的字符)。


如果您要生成此http://en.wikipedia.org/wiki/special_characters special characters,请尝试此操作

1
char c = (char) (randomGenerator.nextInt(0xB4 - 21 + 1) + 21);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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


1
2
3
4
5
6
7
8
9
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));
    }