Go-小项目 (实现一个简单的拼音输入法核心库)

代码:暂时先不公开代码了吧。后边我再看情况。

思维导图

功能 描述 :

功能需求 1 实现核心库文件: 每个文件名为拼音本身.dat, 内容为对应的汉字 和 汉字的频次, 每个占一行。

需求分析1 :

我们可以手动建立 库文件, 然后将手动给文件中设置一些汉字, 默认频次设置为1 , 最大不超过10(效率显得有点低)

注意: 文件中的空行可以跳过, 文件中如果某行出现的格式问题,可以忽略该行

现在库文件 创建好了, 我们可以模拟根据拼音查找汉字了。

创建库文件内容的时候 : 为了保险起见,
1 采用 strings.Join(slice, substr) 将 频数 和 对应的字 拼接起来,
2 采用 strings.Splite(string, substr)[]slice 将切割出来的字存在切片, 我们可以判断频数等等。。。 然后可以根据情况进行排序。

功能需求 2 根据 拼音查找 汉字:

Go-小项目 (实现一个简单的拼音输入法核心库)_第1张图片

需求分析2

查找规则:
1 完整拼音 返回所有可能汉字 ,并按频数排序。 解决方略:我们每次用了一个具体的字之后, 将字的频数+1 , 并对该文件从新按照频数排序(降序)
a 频数均不一样: 则正常排序
b 有频数一样的情况下,按照原文件中的顺序就行了。

2 输入不完整时(未完全输入时,按照匹配开头的文件),展示输出匹配的频次最高的前10个。
不同频次, 频次高的字在前,
相同频次的,按照拼音序排序,高的在前
相同频次, 字母序也相同时,按照在文件中的顺序,展示

对于 非完整的输入时,我们可以借助strings. HasPrefix(s1,“substr”) 方法,判断,是不是前缀相同
借助 strings.Hassuffix(s1, substr)来判断 子文件是否是.dat文件
strings. HasPrefix(s1,“substr”) //返回s1字符串是否以substr开头
eg: strings.HasSuffix(s1, substr)// 返回 s1是否以 substr结尾

反思:

也遇到了不少问题,特别是系统调用, 不过在我的思路考+度娘的帮助下都解决了

所有思路、分析均是我独立思考的,所以代码均是我写的,调试都是我做的,只有库文件的汉字是我问度娘取经而来的。

最后: 空了我再试着解决下那几个小问题吧,现在感觉无伤大雅,但是我们当然要追求完美。

通过几次项目经历:

我发现自己有个奇怪的毛病, 想不出来时不能坐着冥思苦想, 做点别的事,出去吹吹风, 溜达溜达,回来就有思路了。 Amazing。。。。。

你可能感兴趣的:(golang)