首页 > 代码 > 常规代码 > 正文

代码

阅读排行

获取GBK码汉字拼音首字母
2018-05-16 14:54:02   来源:Fcode研讨团队   评论:1 点击:

通过定义一个一维数组保存汉字拼音首字母,通过GBK码快速换算到数组下标获取首字母。可以用来实现类似手机通讯录输入姓名首字母来快速查找的算法。

获取GBK码汉字拼音首字母
fortran 90
szw_sh@163.com
2018-05-12
 
相关资料来源于网络。按照常用字、常用读音优先原则选取读音首字母,首字母以小写字母表示。

汉字GBK码为双字节,范围为8140-FEFE,首字节129-254,尾字节64-254。定义了一个一维数组保存汉字首字母,下标值 +1,使得下标可以从1开始。下标=(首字节-129)*191+(尾字节-64)+1。

汉字GBK码大约有25%编码为各种非汉字符号,其拼音首字母设为空格字符。GBK码有21003个汉字,收集到20887个拼音,剩余116个生僻字没找到拼音。
 
01! 汉字拼音首字母索引数组引用示例
02! szw_sh@163.com
03! 2018-05-12
04! fortran 90
05Program fcode_cn
06  use md_idx
07  Implicit None
08  character(len=*) , parameter :: h='汉字拼音首字母索引数组示例'! 定义示例汉字字符串
09  character(len=len(h)/2) :: py   ! 用于保存对应首字母的变量
10  character(len=len(h))   :: h1
11  character(len=len(py))  :: py1
12  integer :: i , j = 0 , k , n
13  Do i=1,len_trim(h),2            ! 顺序对汉字处理
14    k=md_Char2Index(h(i:i+1))     ! 计算汉字GBK码对应idx数组的下标
15    j=j+1
16    py(j:j)=md_index(k:k)         ! 将拼音首字母按顺序写入字符串
17  End Do
18  write(*,'(1x,a)') h
19  !write(*,'(1x,a)') py
20  write(*,'(1x,a)') '请输入需要查找的子串拼音首字母,例如:szm'
21  read(*,'(a)') py1
22  k=len_trim(py1)
23  n=index(py,py1(1:k))
24  if( n < 1 ) stop '示例字符串中不包含查询子串'
25  h1=h
26  h1(1:2*(n-1))=' '
27  h1(2*(n+k)-1:)=' '
28  write(*,'(/1x,a,/)') '符合条件的子串位置如下:'
29  write(*,'(1x,a)') h
30  write(*,'(1x,a)') h1
31End Program fcode_cn
调用方法为:
use md_idx,通过换算GBK码对应的数组下标获取拼音首字母。 /uploadfile/2018/0516/20180516025346513.f90

演示如何使用该模块进行汉字快速查询

相关热词搜索:汉字 拼音 首字母 GBK

上一篇:利用蔡勒公式获得给定日期的星期数
下一篇:按拍摄时间对JPG照片文件重新命名的小程序

分享到:           收藏