1
我想寫一個庫來從給定的正則表達式生成字符串。但是,如果正則表達式使用否定字符類,如[^a-z]
,我會遇到問題。在這種情況下,我必須在生成的字符串中放置一個不匹配[a-z]
的字符。另外,我希望能夠定義一組優先使用的字符,例如,可打印字符集。查找給定字符集中不包含的可打印字符
問題
如何產生不包含在一個給定的數組/集合中的隨機字符?在這個過程中,我怎麼能喜歡一組角色?
庫中的現有函數會很好,但我無法找到它。
這是我的方法來解決這個問題,但我不知道是否有更好的算法。另外,我的算法不喜歡給定的一組字符,主要是因爲我不知道如何檢查字符是否可打印,或者如何獲取可打印字符的數組/集合/可迭代。
private void run() {
int i = 1024;
System.out.println(getFirstLegalChar(createExampleIllegalCharArray(i)));
System.out.println((char) i);
}
private char getFirstLegalChar(char[] illegalCharArray) {
for (int i = 0; true; i++) {
if (!contains(illegalCharArray, (char) i)) {
return (char) i;
}
}
}
private char[] createExampleIllegalCharArray(int size) {
char[] illegalCharArray = new char[size];
for (int i = 0; i < illegalCharArray.length; i++) {
illegalCharArray[i] = (char) i;
}
return illegalCharArray;
}
private boolean contains(char[] charArray, char c) {
for (int j = 0; j < charArray.length; j++) {
if (charArray[j] == c) {
return true;
}
}
return false;
}
您可以檢查打印和非打印字符名單在http ://www.juniper.net/documentation/en_US/idp5.1/topics/reference/general/intrusion-detection-prevention-custom-attack-object-extended-ascii.html – Prashant
我發現,[有非打印unicode characters](https://en.wikipedia.org/wiki/Unicode_control_characters)。列出可打印字符的Java方法將非常棒。 –
我不認爲java庫有這樣的方法。你可以設計你的。 – Prashant