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 = GenerateRandomLetter(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 GenerateRandomLetter(int Length)
        {
            char[] Pattern = new char[] { ‘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‘ };
            string result = "";
            int n = Pattern.Length;
            Random random = new Random(~unchecked((int)DateTime.Now.Ticks));
            for (int i = 0; i < Length; i++)
            {
                int rnd = random.Next(0, n);
                result += Pattern[rnd];
            }
            return result;
        }

        /// <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();
        }
时间: 2024-10-13 00:47:26

c#随机生成汉字、字母、数字的相关文章

java中随机生成汉字

main方法中使用: //随机生成100个汉字 String ss=""; for(int i=0;i<100;i++){ ss+=getChinese(i); } System.out.println(ss); 结果如图: //随机生成汉字//seed指定Random(long seed)中的种子数public static String getChinese(long seed) throws UnsupportedEncodingException{ String str=

JS生成随机的由字母数字组合的字符串

前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 1 Math.random().toString(36).substr(2); 输出结果 解释 很有意思,研究了一下,基本上toString后的参数规定可以是2-36之间的任意整数,不写的话默认是10(也就是十进制),此时返回的值就是那个随机数. 若是偶数,返回的数值字符串都是短的,若是奇数,则返回的将是一个很大长度的表示值. 若<10 则都是数字组成,>10 才会包含字

Java代码实现随机生成汉字

一.背景知识 GB 2312-80 是中国国家标准简体中文字符集,全称<信息交换用汉字编码字符集·基本集>,由中国国家标准总局发布,1981年5月1日实施.GB2312 编码通行于中国大陆:新加坡等地也采用此编码.中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312. GB2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个:同时收录了包括拉丁字母.希腊字母.日文平假名及片假名字母.俄语西里尔字母在内的 682 个字符.GB2312 的出现,基本

题:统计数字出现次数。 随机生成100个数字,数字范围从1到10,统计每个数字出现的次数并打印到控制台。

public static void main(String[] args) { printCount(getNumList());} private static ArrayList<Integer> list; public static ArrayList<Integer> getNumList() { list = new ArrayList<Integer>(); Random r = new Random(); for (int i = 0; i <

python 随机生成汉字

第一种方法:Unicode码 在unicode码中,汉字的范围是(0x4E00, 9FBF) 这个方法比较简单,但是有个小问题,unicode码中收录了2万多个汉字,包含很多生僻的繁体字. 第二种方法:GBK2312 gbk2312对字符的编码采用两个字节相组合,第一个字节的范围是0xB0-0xF7, 第二个字节的范围是0xA1-0xFE.对GBK2312编码方式详细的解释请参看GBK2312编码 GBK2312收录了6千多常用汉字.两种方法的取舍就看需求了. import random def

随机生成字符串,数字,手机号,邮箱

/** * echo nRand('mail');die; * @param array $type * @param int $len * @return int|string */function nRand($type=[],$len= 20){ $t = gettype($type); if($t === 'string'){ $rand=""; if($type == 'phone') { $rand=0; for ($i = 1; $i < 9; ++$i) { $r

php 正则只保留 汉字 字母 数字

$str = "?><?>”\"<喂喂喂555?><|“:L}{P+_)In thsdff0?><M<>\"[email protected]#$%^&*()+_)(*&dsdffsde~!@#¥%……&*5545445()+——)(*&……%¥#@!~ 电影_后天 230809-peopl.e die我d.(*&^%$#@!!~"; echo match_chine

[GO]将随机生成的四位数字拆分后放到一个切片里

package main import ( "math/rand" "time" "fmt" ) func InitData(p *int) { rand.Seed(time.Now().UnixNano()) var num int for { num = rand.Intn(10000) if num >= 1000 { break } } *p = num } func getNum(s []int, n int) { s[0] =

[GO]随机生成四们数字

package main import ( "math/rand" "time" "fmt" ) func InitData(p *int) { rand.Seed(time.Now().UnixNano()) var num int //这里为什么不写成自动推导类型呢?因为如果写成自动推导类型,那就肯定需要写在for的循环里面,那样在for循环外面就无法给*p传值(因为作用域的关系) for { num = rand.Intn(10000) i