咸蛋系列一●《模板模式构建随机对象生成》3 自定义扩展,随机生成不重复汉字...

目前网上随机生成汉字的源码很多,无外乎生成四个数字,前两个构成区码,后两个构成位,然后使用区位码对应的16进制编码转换成汉字(可参考http://www.cnblogs.com/navicy/archive/2005/05/08/150756.html)。

也就是说,没生成一个汉字,需要生成4个随机数,其实,仔细想想大可不如此麻烦。

研究区位码表(http://www.mytju.com/classCode/tools/QuWeiMa_FullList.asp),我们可以发现:

1. 16进制编码从A1A1开始,即1区1位的编码为A1A1
2. 汉字是从16区开始,87区结束。(B0 - F7)
3. 16区到55区为常用字,且55区后5位(5590 - 5594)未编码。(B0A1 - D7F9)。共3755个
4. 56-87区为生僻字(B1A1 - F7FE)。共3008个。
5. 1-9区为中文符号
6. 每个区的位都是从A1开始FE结束,共94个。

因此,假设我们要生成一个随机的常用字,那么我们完全可以生成一个0-3754的随机数,然后通过其在区位码中的顺序来获取具体的汉字。

博主将汉字的生成拆分成了多个部分。

1. 区域码提供者AreaCodeProvider

2. 常用字提供者SimpleChineseProvider_Often(由多个区域码提供者构成)。

2. 生僻字提供者SimpleChineseProvider_Unique(由多个区域码提供者构成)。

3. 简体字提供者SimpleChineseProvider(由常用字和生僻字提供者构成)。

具体代码请获取源码查看https://APirate@bitbucket.org/APirate/lib.pirate.unit.randomextension.git

 

另外,为了让使用者可以更方便的使用简体字提供者,我还提供了一个使用枚举调用的方法。用户可以通过枚举,非常方便的选择提供者,常用字、生僻字、或者两者都使用。

转载于:https://www.cnblogs.com/Pupa/p/4564990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值