http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7743|回复: 4

[C#语言基础] 分享一随机生成汉字、字母、数字的方法给大家

[复制链接]
发表于 2016-2-18 21:50:06 | 显示全部楼层 |阅读模式
例如将“{随机汉字}”替换成单个汉字,在网上找到的方法如果出现连续替换的话,会出现随机生成的汉字会相同,经过我自己在网上借鉴一些前辈的思维,自己修改了后代码如下:
[C#] 纯文本查看 复制代码
/// <summary>
        /// 替换变量
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string replaceBianLiang(string content)
        {
            content = content.Replace("{当前时间}", DateTime.Now.TimeOfDay.ToString());
            string[] bianliang = new string[] { "{随机字母}", "{随机数字}", "{随机汉字}" };
            Regex r;
            int count;
            string readstr="";
            foreach(string str in bianliang){
                count = (content.Length - content.Replace(str, "").Length) / str.Length;
                if (str == "{随机汉字}") readstr = RandChina(count);
                if (str == "{随机数字}") readstr = GenerateCheckCodeNum(count);
                if (str == "{随机字母}") readstr = GenerateRandomNumber(count);
                if (count > readstr.Length) count = readstr.Length;
                r = new Regex(str.Replace("{", "\\{").Replace("}", "\\}"));
                for (int i = 0; i < count;i++ )
                {
                    content = r.Replace(content, readstr.Substring(i,1), 1);
                }
            }
            return content;
        }


 /// <summary>
        /// 随机生成字符串
        /// </summary>
        /// <param name="Length"></param>
        /// <returns></returns>
        public static string GenerateRandomNumber(int Length)
        {
            StringBuilder newRandom = new StringBuilder(62);
            Random rd = new Random();
            for (int i = 0; i < Length; i++)
            {
                newRandom.Append(constant[rd.Next(62)]);
            }
            return newRandom.ToString();
        }

        /// <summary>
        /// 随机生成数字
        /// </summary>
        /// <param name="codeCount"></param>
        /// <returns></returns>
        public static string GenerateCheckCodeNum(int codeCount)
        {
            int rep = 0;
            string str = string.Empty;
            long num2 = DateTime.Now.Ticks + rep;
            rep++;
            Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
            for (int i = 0; i < codeCount; i++)
            {
                int num = random.Next();
                str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();
            }
            return str;
        }

        /// <summary>
        /// 此函数为生成指定数目的汉字
        /// </summary>
        /// <param name="charLen">汉字数目</param>
        /// <returns>所有汉字</returns>
        public static string RandChina(int charLen)
        {
            int area, code;//汉字由区位和码位组成(都为0-94,其中区位16-55为一级汉字区,56-87为二级汉字区,1-9为特殊字符区)
            StringBuilder strtem = new StringBuilder();
            Random rand = new Random();
            for (int i = 0; i < charLen; i++)
            {
                area = rand.Next(16, 88);
                if (area == 55)//第55区只有89个字符
                {
                    code = rand.Next(1, 90);
                }
                else
                {
                    code = rand.Next(1, 94);
                }
                strtem.Append(Encoding.GetEncoding("GB2312").GetString(new byte[] { Convert.ToByte(area + 160), Convert.ToByte(code + 160) }));
            }
            return strtem.ToString();
        }





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-2-18 23:29:37 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2016-2-19 08:17:44 | 显示全部楼层
我只是路过打酱油的。
发表于 2016-2-19 11:40:29 | 显示全部楼层
受教了学习中……
发表于 2016-2-20 01:10:36 | 显示全部楼层
受教了学习中……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-16 03:45

© 2014-2021

快速回复 返回顶部 返回列表