From 71bc4a2e051940b882ec740ac9b999bc34387ef2d4eea01066d61b61aa3e9357 Mon Sep 17 00:00:00 2001 From: Minimons Date: Wed, 3 Dec 2025 09:45:27 +0100 Subject: [PATCH] NoIssue: Add some String generators --- .../ref/RandomValueGeneratorStringImpl.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/com/r35157/libs/random/impl/ref/RandomValueGeneratorStringImpl.java diff --git a/src/main/java/com/r35157/libs/random/impl/ref/RandomValueGeneratorStringImpl.java b/src/main/java/com/r35157/libs/random/impl/ref/RandomValueGeneratorStringImpl.java new file mode 100644 index 0000000..f927f26 --- /dev/null +++ b/src/main/java/com/r35157/libs/random/impl/ref/RandomValueGeneratorStringImpl.java @@ -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......57 - 65......90 - 97......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; +}