Category: MyCPAN Keywords: 汉字
这是一个我今天刚写的 module: Lingua::Han::Utils主要用于封装一些我常用的与汉字处理有关的函数。目前封装了四个函数,分别介绍如下:
Unihan_value
返回 Unihan.txt 的第一个字段(出去+U)。 Unihan: http://www.unicode.org/Public/UNIDATA/Unihan 的用处自然不用说,我写的拼音,比划还有广东化都来自这个文件。
use Lingua::Han::Utils qw/Unihan_value/;
# Unihan_value
# return the first field of Unihan.txt on unicode.org
my $word = "我";
my $unihan = Unihan_value($word); # return '6211'
my $words = "爱你";
my @unihan = Unihan_value($word); # return (7231, 4F60)
my $unihan = Unihan_value($word); # return 72314F60
cdecode
感谢 joe jiang 的帮助, Encode::Guess 正好满足要求。一般来说,我们写的代码都有两种情况,一种是 ASCII 编辑模式,一种是在 Unicode 编辑模式下写的。
- 而不同的模式要 decode 时是不一样的:
- 在 ASCII 模式下,为 decode('euc-cn', $word) 或 decode('gb2312', $word)
- 在 Unicode 编辑模式下,为 decode('utf8', $word)
csplit
用于分割文字。可以是纯中文或中英文混合字。use Lingua::Han::Utils qw/csplit/;
my $words = "我爱你";
my @words = csplit($words); # return ("我", "爱", "你")
csubstr
用于截取文字。可以是纯中文或中英文混合字。use Lingua::Han::Utils qw/csubstr/;
my $words = "我爱你啊";
my @words = csubstr($words, 1, 2); # return ("爱", "你")
my @words = csubstr($words, 1); # return ("爱", "你", "啊")
my $words = csubstr($words, 1, 2); # 爱你
clength
将汉字对待成一个单词。my $words = "我ya爱你";
print clength($words); # 5