avi*_*der 1 java special-characters
我正在尝试仅使用特殊字符来创建大小为5的字符串-
〜`!@#$%^&*()-_ = + [{]} \ |;:\'\“,<。> /?
其中也包括空间。
下面是我尝试过的代码行:
public static String randomSpecialCharacterString() {
char[] possibleCharacters = (new String("~`!@ # $ %^&*()-_=+[{]}\\|;:\'\",<.>/?")).toCharArray();
String randomStr = RandomStringUtils.random( 5, 0, possibleCharacters.length-1, false, false, possibleCharacters, new SecureRandom());
return randomStr;
}
Run Code Online (Sandbox Code Playgroud)
但是,它不会返回非重复的String。而且,应该返回带空格的String。
例如- @# ?/和!)( +
我已经浏览了所有可能的重复项。
假设RESULT_STR_LENGTH是5:
如果您不想重复,只需将以下顺序随机化即可possibleCharacters:
char[] shuffledCharacters = new char[possibleCharacters.length];
Collections.shuffle(Arrays.asList(possibleCharacters)).toArray(shuffledCharacters);
Run Code Online (Sandbox Code Playgroud)如果结果中必须有空格,则将一个随机字符替换为空格(如果您不想重复空格,请确保possibleCharacters不包含任何空格):
shuffledCharacters[new Random().nextInt(RESULT_STR_LENGTH)] = ' ';
Run Code Online (Sandbox Code Playgroud)然后以字符串形式返回前RESULT_STR_LENGTH个字符:
return new String(shuffledCharacters, 0, RESULT_STR_LENGTH);
Run Code Online (Sandbox Code Playgroud)