StuceSoftware.RandomStringGenerator 3.0.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package StuceSoftware.RandomStringGenerator --version 3.0.1                
NuGet\Install-Package StuceSoftware.RandomStringGenerator -Version 3.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StuceSoftware.RandomStringGenerator" Version="3.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StuceSoftware.RandomStringGenerator --version 3.0.1                
#r "nuget: StuceSoftware.RandomStringGenerator, 3.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StuceSoftware.RandomStringGenerator as a Cake Addin
#addin nuget:?package=StuceSoftware.RandomStringGenerator&version=3.0.1

// Install StuceSoftware.RandomStringGenerator as a Cake Tool
#tool nuget:?package=StuceSoftware.RandomStringGenerator&version=3.0.1                

StuceSoftware.RandomStringGenerator

Authors : Jeff Shergalis
Lakhya Jyoti Nath (ljnath)

Date : September 2020 - October 2024

GitHub last commit GitHub Actions Workflow Status codecov NuGet Version NuGet Downloads

Introduction

StuceSoftware.RandomStringGenerator is a library developed in C# to generate random strings of from various categories. It is fast and suports string generation of various length. It is parameterized to generate both a single or a list of random strings.
Random strings can be of types lowercase, uppercase, numbers and symbols. It also allows you to generate random string with only a subset of symbols from the supported list. It is an ideal library for use in projects such as:

  • password generator
  • unique-id generator
  • unique filename generator
  • raw data generator for data processing/parsing projects
  • etc. etc.

Features

  • Supports single or multiple random string generation
  • Supports random string generation from alphabet, numbers, symbols or a combination of them
  • Supports customized length of random string
  • Supports random length of generated strings with a fixed max length
  • Supports true unique random number generation
  • Support force inclusion of strings of each type
  • Supports .NET Standard 2.0 & 2.1, .NET 6.0, 8.0 & 9.0

Supported Types

  • Lowercase : abcdefghijklmnopqrstuvwxyz
  • Uppercase : ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • Numbers : 0123456789
  • Symbols : !#$%&'()*+,-./:;<=>?@[]^_`{|}~"

These types are defined by an enum CharClasses which has the [Flags] attribue, making it easy to combine the different classes.

Breaking Changes 🚨

v2.0

Switched to a [Flags] enum for CharClasses

v3.0 (in pre-release)

RandomStringGenerator class is now non-static. The constructor takes an IRandomSource object, which is used internally to generate random values.
There are two implementations of IRandomSource provided with the library: SystemRandomSource and SecureRandomSource.

Download and Install

NuGet Package StuceSoftware.RandomStringGenerator

dotnet add package StuceSoftware.RandomStringGenerator

Sample Usage

using StuceSoftware.RandomStringGenerator;
using StuceSoftware.RandomStringGenerator.RandomSourceImplementations;

var randomStringGenerator = new RandomStringGenerator(new SystemRandomSource());

// generating one random string from lowercase alphabets
var randomString = randomStringGenerator.GetString(CharClasses.Lowercase);
System.Console.WriteLine(randomString);

// generating 100 random strings using both upper and lower case alphabet, numbers and all supported symbols
var randomAlphaNumbericStrings = randomStringGenerator.GetStrings(
    CharClasses.Lowercase | CharClasses.Uppercase | CharClasses.Numbers | CharClasses.Symbols, 100);
foreach (string s in randomAlphaNumbericStrings)
    System.Console.WriteLine(s);

// generating 200 random string using uppercase alphabet and custom symbols
var randomAlphabetWithCustomSymbols = randomStringGenerator.GetStrings(CharClasses.Uppercase, 200, "/+*-");
foreach (string s in randomAlphabetWithCustomSymbols)
    System.Console.WriteLine(s);

// generating 1000 true random strings of length 20 using uppercase alphabet with custom symbols
var trueUniqueRandomStrings = randomStringGenerator.GetStrings(CharClasses.Uppercase, 1000, 20, "/+*-", false, true);
foreach (string s in trueUniqueRandomStrings)
    System.Console.WriteLine(s);

// generating 100 random strings using both upper and lowercase alphabet, numbers and custom symbols
var randomAlphabetWithCustomSymbols = randomStringGenerator.GetStrings(CharClasses.Lowercase | CharClasses.Uppercase | CharClasses.Numbers, 100, "/+*-", forceOccuranceOfEachType: true);
foreach (string s in randomAlphabetWithCustomSymbols)
    System.Console.WriteLine(s);

Note 👀
As of version 2.0, if custom symbols are defined, there is no need to specify the symbol character class (CharClasses.Symbols), this is assumed when custom symbols are provided

Give a Star! ⭐

If you find this library helpful, please give it a star. Thanks in advance!

License

Copyright © 2024 Stuce Software Solutions under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.2-prerelease.15 40 10/29/2024
3.0.1 91 10/23/2024
3.0.0-prerelease.13 37 10/23/2024
3.0.0-prerelease.12 35 10/22/2024
2.0.0 91 10/4/2024
2.0.0-prerelease.10 39 10/4/2024
1.0.3-prerelease.9 47 10/4/2024
1.0.2 99 10/3/2024
1.0.2-prerelease.7 45 10/3/2024
1.0.1 91 10/2/2024
1.0.0-prerelease.5 44 10/2/2024
1.0.0-prerelease.4 42 10/2/2024
1.0.0-prerelease.3 44 10/2/2024
1.0.0-prerelease.1 48 10/2/2024

- RandomStringGenerator class is no longer static, but rather takes an IRandomSource object in the constructor. This allows for easier testing and
       for providing your own random generator to the class. Along with this change two generators are provided. One using System.Random and the other
       using the secure RandomNumberGenerator.