C# 自定义随机字符串生成

发布于:2025-02-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

目录

简介

调用方式:

详细说明

1.外层方法封装

2.定义字符组合

3.按长度生成


简介

随机字符串,包含数字,字母,特殊符号等,随机拼凑,长度可输入

为了生成效率,长度大于1024的,则用重复字符进行拼凑,以1024为重复长度

可以直接Nuget 搜Rotion

LS.Helper  是基于.net framework

LS.Standard.Helper 是基于  Standard 2.0 

调用方式:

int LogLength=1024;

var content = SimpleCharBuilder.Build(LogLength, true);

详细说明

下面说下生成的方式:

1.外层方法封装

 /// <summary>
 /// 简单随机字符生成器
 /// </summary>
 public class SimpleCharBuilder
 {
     /// <summary>
     /// 生成随机字符
     /// </summary>
     /// <param name="length">生成的长度</param>
     /// <param name="includeSpecial">是否包含特殊字符,默认不包含</param>
     /// <returns></returns>
     public static string Build(int length, bool includeSpecial = false)
     {
         return new SimpleChar().Build(length, includeSpecial);
     }
 }

2.定义字符组合

定义 数字+字母组合的数组

private string[] source = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };

定义特殊字符

private string[] special_char = new string[] { "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "+", "=", "{", "}", "[", "]", ";", ":", ",", ".", "/", "<", ">", "?", "|", "\\", "`", "~" };

定义随机数对象

private static Random random = new Random();

3.按长度生成

/// <summary>
/// 生成随机字符
/// </summary>
/// <param name="length">生成的长度</param>
/// <param name="includeSpecial">是否包含特殊字符,默认不包含</param>
/// <returns></returns>
public string Build(int length, bool includeSpecial = false)
{
    string result = "";
    if (length > 0)
    {
        //参与生成的最终字符列表
        List<string> dataSource = new List<string>();
        dataSource.AddRange(source);
        if (includeSpecial)
        {
            //如果设定包含特殊字符,则将特殊字符数组也添加进来
            dataSource.AddRange(special_char);
        }

        int min = 0;
        int max = dataSource.Count - 1;
        if (length > 1024)
        {
            //长度大于1024
            int cycle = length / 1024;
            for (int i = 0; i < cycle; i++)
            {
                //直接重复添加1024个相同的字符
                var g = dataSource[random.Next(min, max)];
                result += g.PadRight(1024, g[0]);
            }
        }
        else
        {
            //长度小于1024
            for (int i = 0; i < length; i++)
            {
                var g = dataSource[random.Next(min, max)];
                result += g;
            }
        }
    }
    return result;
}


网站公告

今日签到

点亮在社区的每一天
去签到