Go将中文转换为拼音
最近在学习和研究Go,因此在项目上完成的功能点都想着用Go实现,以促进学习。Go将中文转换为拼音比java方便一些的是不必操心非中文字符,但二者有个通用的问题是需要自己解决多音字姓氏问题。

// Go
Maple
// An highlighted block
/*
程序目的:从文本文件中得到中文后转换为拼音
程序版本:go1.14
程序编写:枫叶
编写时间:2020年3月6日*/
package ConvertPinYinimport ("bufio""bytes""fmt""github.com/chain-zhang/pinyin""log""os""strings""time"
)//对外接口方法
func GetFile(fileName string){fetchChineseWord(fileName)
}
//读取文件函数并且记录转换的内容
func fetchChineseWord(fileName string) error{file,err := os.Open(fileName)//构造记录文件名,将转换结果写入文件timeFile := time.Now().Format("20060102150405")headFile := "PinYin"tailFile := ".txt"var bt bytes.Bufferbt.WriteString(headFile)bt.WriteString(timeFile)bt.WriteString(tailFile)recordFile := bt.String()bt.Reset() //重置缓冲区//构造记录文件名,将转换结果写入文件if _, err := os.Stat(recordFile); os.IsNotExist(err) {cf,err := os.Create(recordFile)if err != nil {fmt.Println("文件创建失败。")}else {fmt.Println("创建文件:",cf.Name())}closeFile(*cf)}wf,err := os.OpenFile(recordFile, os.O_RDWR|os.O_APPEND, 0666)w := bufio.NewWriter(wf)fmt.Println("准备将转换记录写入",wf.Name(),"文件...")counter :=0if err != nil{log.Printf("无法打开文件,请检查: err: [%v]", err)//defer closeFile(*file)return err}else{lines := bufio.NewScanner(file)fmt.Println("正在写入",wf.Name(),"文件...")for lines.Scan(){counter ++line := lines.Text()fmt.Println(line,"|GuangXi",toPinYin(line))bt.WriteString(line)bt.WriteString("|")bt.WriteString("GuangXi")bt.WriteString(toPinYin(line))bt.WriteString("\n")content := bt.String()_,err2 := w.WriteString(content)if err2 != nil {return err2}//w.WriteString("\n")w.Flush()//wf.Sync()bt.Reset() //重置缓冲区}fmt.Println("共读取",counter,"记录")fmt.Println("本次转换记已经写入",recordFile,"文件")}closeFile(*file)closeFile(*wf)return nil
}
//关闭文件
func closeFile(f os.File){if(&f != nil){f.Close()fmt.Println("已经关闭",f.Name(),"文件...")}
}//中文转拼音函数
func toPinYin(words string) string{//fmt.Println("words",words)var name stringflag := 0for _,n :=range words {flag ++//fmt.Println("n:",strings.Replace(string(n)," ","",-1))if (strings.Compare(strings.Replace(string(n)," ","",-1),"覃") == 0) && (flag == 1) {name += firstNamePin(string(n))flag = 0}else if (strings.Compare(strings.Replace(string(n)," ","",-1),"区") == 0) && (flag == 1) {name += firstNamePin(string(n))flag = 0}else if (strings.Compare(strings.Replace(string(n)," ","",-1),"牟") == 0) && (flag == 1) {name += firstNamePin(string(n))flag = 0}else if (strings.Compare(strings.Replace(string(n)," ","",-1),"单") == 0) && (flag == 1) {name += firstNamePin(string(n))flag = 0}else{str,err := pinyin.New(string(n)).Split("").Mode(pinyin.InitialsInCapitals).Convert()if err != nil {fmt.Println("转换拼音异常...")}else{name +=str}}}return name
}
//多音字解决方法,尤其是姓氏
func firstNamePin(name string) string{var n string//fmt.Println("name:",name)n = ""if strings.Compare(name,"覃") == 0 {n = "Qin"}else if strings.Compare(name,"区") == 0{n = "Ou"}else if strings.Compare(name,"牟") == 0{n = "Mu"}else if strings.Compare(name,"单") == 0{n = "Shan"}return n
}/*
程序目的:将中文转换成拼音
程序版本:go1.14
程序编写:枫叶
编写时间:2020年3月6日*/
package mainimport ("GoTest/ConvertPinYin""fmt""os""time"
)func main(){fmt.Println("----------中文转换为拼音程序----------")currentPwd, _ := os.Getwd()fmt.Println("当前工作路径:",currentPwd)fileName := "user.txt"fmt.Println("读取文件名为:",fileName)//定义开始时间startTime := time.Now()ConvertPinYin.GetFile(fileName)//定义结束时间finishTime := time.Now()fmt.Println("本次运行时间为:",finishTime.Sub(startTime),"秒")
}

Go将中文转换为拼音相关推荐

  1. 中文转换为拼音工具类(很全)

    中文转换为拼音工具类(很全) 1.所需的jar包 2.工具类(可以直接拿去用) 1.所需的jar包 <!--获取汉字的拼音--><dependency><groupId& ...

  2. 通过第三方jar实现中文转换为拼音

    如何把中文转换为拼音 通过使用第三方的jar包pinyin4j-2.5..jar,把中文转换为拼音,代码如下. public class PinYinUtil {/*** 获取汉字的拼音,会销毁一定的 ...

  3. 使用pinyin4j解决中文转换为拼音的问题

    博客第一篇日志啊,呵呵,那就记录一下我昨天在工作中遇到的汉字转换拼音的问题吧~~ 在工程中引入pinyin4j-2.5.0.jar,该jar包可以实现汉字转换为拼音,汉字转换为拼音首字母,以及得到字符 ...

  4. 使用pinyin4j将中文转换为拼音

    2019独角兽企业重金招聘Python工程师标准>>> 1 安装pinyin4j 引入Maven依赖包 <!-- https://mvnrepository.com/artif ...

  5. oracle把中文转换为拼音,怎样将“Oracle”的外部表汉字转换为拼音

    怎样将"Oracle"的外部表汉字转换为拼音 2008-03-07 eNet&Ciweek 我在原来的应用中使用代码表加一个函数来处理汉字转拼音的转换问题,现在由于工作需要 ...

  6. Excel中文转换为拼音(大写首字母、小写首字母、全拼、全拼首首字母大写)

    很多时候我们需要处理一下汉字转换为拼音的需求,今天给大家分享一下标题包含的一下转换方法 1 .excel通过宏可以很好的处理汉字转换为拼音的    1.1下面的是转为全拼音的宏代码 Function ...

  7. js 的中文转换为拼音

    由于需要做数据修复,为数据库的表增加拼音字段,就找前端要来相关的代码,出处未知,下面的代码可以直接使用 var PinYin = {"a": "\u554a\u963f\ ...

  8. 在数据库中将中文转换为拼音或者汉字首字母 转

    sql数据库 自定义一个函数 把下面代码写进去 功能是得到汉字拼音首字母 如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  9. Mono 3.2 测试NPinyin 中文转换拼音代码

    C#中文转换为拼音NPinyin代码  在Mono 3.2下运行正常,Spacebuilder 有使用到NPinyin组件,代码兼容性没有问题. using System; using System. ...

  10. Python实现中文转拼音功能

    Python实现中文转拼音功能 在日常开发中,如果需要将中文转换为拼音,我们可以使用Python来实现.本文将介绍如何使用Python进行中文转拼音的操作,帮助大家更好地理解和使用这个功能. 安装py ...

最新文章

  1. AIX命令参考大全,卷 4,n - r
  2. c调python_应该是史上最全的python调用C接口
  3. 电脑上玩 Google纵横
  4. JavaScript 简史:从网景到框架 | 技术头条
  5. js类(继承)(一)
  6. HMC 命令行登陆设置
  7. 利用 Kubernetes Service 的 selector 无痛运维在线 pod
  8. ABAP function group和Tomcat library重复加载问题 1
  9. 相关滤波跟踪·MOSSE算法的梳理
  10. 如何使用虚拟专用网络登录网络设备?
  11. html网页页面显示不正常原因,网页不能正常显示css是什么原因?
  12. 联发科的10核Helio X20处理器
  13. 如何用matlab画烧杯,DLA模型的Matlab程序.doc
  14. Carsim基本使用方式
  15. 怎么用VLOOKUP来匹配excel表里面的数据
  16. 何为对象python
  17. 西门子PLC与IFIX软件以太网通讯
  18. 【Linux学习(3)】----C语言编程篇(1)
  19. python收集数据做主神_里纲_[综漫]收集数据做主神小说无防盗章节_作者忘却的悠_新书包网(www.51aslz.com)...
  20. 【Kubernetes | Pod 系列】Pod 的基本管理(2)——对 Pod 的查询

热门文章

  1. 洛谷 P4704 太极剑
  2. 解读加多宝的营销案例分析 1
  3. 分享:STC-51激光雕刻机项目(免费完整资料)
  4. ffmpeg 为取经而来_取经路上的妖魔鬼怪,傻傻分不清楚
  5. a16z 2022 年加密行业研究报告(简)
  6. 实验室主机Ubuntu远程控制+自动开关机
  7. 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列四之重启系统,系统设置
  8. mysql:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)解决方法
  9. 计算机文字输入程序,电脑“造字”,其实很简单
  10. opencore 引导 近完美 黑苹果EFI(技嘉H310/I5-9400F/RX560D)