NoIssue: Add some String generators
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
package com.r35157.libs.random.impl.ref;
|
||||||
|
|
||||||
|
import com.r35157.libs.random.RandomValueGeneratorInt;
|
||||||
|
import com.r35157.libs.random.RandomValueGeneratorString;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class RandomValueGeneratorStringImpl implements RandomValueGeneratorString {
|
||||||
|
public RandomValueGeneratorStringImpl(RandomValueGeneratorInt rvgi) {
|
||||||
|
this.rvgi = rvgi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull String getSomeStringAlphaNumericOnly(int length) {
|
||||||
|
// ASCII Range size
|
||||||
|
// Numeric 48-57 10
|
||||||
|
// Alpha upper 65-90 26
|
||||||
|
// Alpha lower 97-122 26
|
||||||
|
int totalNumberOfCandidates = 10 + 26 + 26;
|
||||||
|
|
||||||
|
StringBuilder buffer = new StringBuilder(length);
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
int randomInt = rvgi.getSomeInt(0, totalNumberOfCandidates - 1);
|
||||||
|
int asciiIndex = convertRandomIndexToASCIIIndex(randomInt);
|
||||||
|
|
||||||
|
buffer.append((char) asciiIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int convertRandomIndexToASCIIIndex(int randomIndex) {
|
||||||
|
// RandomIndex 0... ...9 - 10... ...35 - 36... ... 61
|
||||||
|
// ASCII values: 48...<numeric>...57 - 65...<alpha upper>...90 - 97...<alpha lower>...122
|
||||||
|
int asciiIndex;
|
||||||
|
|
||||||
|
if(randomIndex >= 36) {
|
||||||
|
asciiIndex = 97 + (randomIndex - 36);
|
||||||
|
} else if(randomIndex >= 10) {
|
||||||
|
asciiIndex = 65 + (randomIndex - 10);
|
||||||
|
} else {
|
||||||
|
asciiIndex = 48 + randomIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
return asciiIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
private RandomValueGeneratorInt rvgi;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user