NoIssue: Add some String generators

This commit is contained in:
Minimons
2025-12-03 09:45:27 +01:00
parent 909eba4575
commit 71bc4a2e05

View File

@@ -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;
}