Golang实现将中文转化为拼音

导语:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英文。

官方demo 参考了github.com/mozillazg/go-pinyin

搜到github.com/Chain-Zhang/pinyin的资料多一点,但貌似不维护了。

package main

import (
	"fmt"
	"github.com/mozillazg/go-pinyin"
)

func main() {
	hans := "中国人"

	// 默认
	a := pinyin.NewArgs()
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zhong] [guo] [ren]]

	// 包含声调
	a.Style = pinyin.Tone
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zhōng] [guó] [rén]]

	// 声调用数字表示
	a.Style = pinyin.Tone2
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zho1ng] [guo2] [re2n]]

	// 开启多音字模式
	a = pinyin.NewArgs()
	a.Heteronym = true
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zhong zhong] [guo] [ren]]
	a.Style = pinyin.Tone2
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zho1ng zho4ng] [guo2] [re2n]]

	fmt.Println(pinyin.LazyPinyin(hans, pinyin.NewArgs()))
	// [zhong guo ren]

	fmt.Println(pinyin.Convert(hans, nil))
	// [[zhong] [guo] [ren]]

	fmt.Println(pinyin.LazyConvert(hans, nil))
	// [zhong guo ren]
}

我想要的是后期把中文传入并转换成拼音 类似于用户名。

创建main.go

package main

import (
	"fmt"
	"github.com/mozillazg/go-pinyin"
	"strings"
	"reflect"
	"github.com/astaxie/beego"
)

func main() {
	hans := "中国人"

	a := pinyin.LazyConvert(hans, nil)
	// [zhong guo ren]

	var test []string = []string{}
	for a, v := range a{
		beego.Info(v)
		beego.Info(a)
		if a == 0 {
			test = append(test, v)
		} else {
			test = append(test, ",")
			test = append(test, v)
		}

	}
        beego.Info("处理1")
	beego.Info(test)

//  通过这一条处理 strings.Trim
	result := strings.Trim(fmt.Sprint(test), "[]")
	// result := strings.Replace(strings.Trim(fmt.Sprint(test), "[]"), " ", ",", -1)
	beego.Info(result)
	beego.Info(reflect.TypeOf(result))

result2 := strings.Replace(result, " , ", "", -1)
       beego.Info(result2)
	// zhongguoren
}
go get -u github.com/mozillazg/go-pinyin
go run main.go

结果图

到此这篇关于Golang实现将中文转化为拼音的文章就介绍到这了,更多相关Golang中文转拼音内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Go 验证字符串中是否包含中文(推荐)

    发现一个验证字符串是否包含中文滴时候,一个比正则更好使滴方法,而且是golang 自带滴验证. 不需要自己写正则验证,代码如下: package main import ( "fmt" "regexp" "unicode" ) func main() { s1 := "我是中国人hello word!,2020 street 188#" var count int for _, v := range s1 { if unico

  • Golang中文字符串截取函数实现原理

    在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码. 例如: 想要截取前四个字 name := "我是胡八一" fmt.Println("name[:4] = ",name[:4]) 执行后得到的结果会是这样的: name[:4] = 我? 解决方法: 先将其转为[]rune,再截取后,转会string na

  • Golang实现将中文转化为拼音

    导语:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化.想把姓名转化成拼音.因为有些账号即需要中文也需要英文. 官方demo 参考了github.com/mozillazg/go-pinyin 搜到github.com/Chain-Zhang/pinyin的资料多一点,但貌似不维护了. package main import ( "fmt" "github.com/mozillazg/go-pinyin" ) func main() { hans

  • asp.net(C#)把汉字转化成全拼音函数(全拼)

    复制代码 代码如下: /// <summary> /// 把汉字转换成拼音(全拼) /// </summary> /// <param name="hzString">汉字字符串</param> /// <returns>转换后的拼音(全拼)字符串</returns> public static string ConvertE(string hzString) { // 匹配中文字符 Regex regex = n

  • 基于PHP如何把汉字转化为拼音

    PHP将汉字转换拼音是程序员们经常需要操作的任务之一,别看这一小功能却能发挥很大的作用,以下是正确的汉字转拼音方法,大家可以借鉴一下. 具体代码如下所示: <pre class="brush:php"><?php $d=array( array("a",-20319), array("ai",-20317), array("an",-20304), array("ang",-20295),

  • 汉字转化为拼音(php版)

    汉字转化为拼音(php版) 很多服务器对于中文文件名支持不是很好,有没有好的办法来解决呢???现在的解决方法一般是产生一个ID,将这个ID做文件名:网页上如果url带汉字也经常出错:现在的解决方法一般用urlencode编码 现在用了这个转化,就好多了 原理:利用多维数组 1.添加索引 2.遍历数组 <? $d=array( array("a",-20319), array("ai",-20317), array("an",-20304),

  • MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)

    fristPinyin : 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"中国人"->Z) 复制代码 代码如下: CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8BEGIN    DECLARE V_RETURN VARCHAR(255);    SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P

  • 使用jquery.qrcode.min.js实现中文转化二维码

    今天还是要讲一下关于二维码的知识,前几篇讲解中有讲到我使用的可以生成二维码的js是qrcode.js,然后结合Cordovad的插件$cordovaBarcodeScanner插件可以扫描二维码,这样就基本完成了简单的扫一扫功能.后来在项目进行,开始要调用后台数据和传参数到接口的时候发现qrcode.js它只能解析英文或者数字,并且只能解析一个字符串! 而我所需要的是将一个对象转化成二维码,然后在扫描的时候取出对象中的数据,显然qrcode.js不能实现,经过查找,找到另一个jquery.qrc

  • JS实现中文汉字按拼音排序的方法

    本文实例讲述了JS实现中文汉字按拼音排序的方法.分享给大家供大家参考,具体如下: 代码1,拼音排序: var array = ['武汉', '北京', '上海', '天津']; var resultArray = array.sort( function compareFunction(param1, param2) { return param1.localeCompare(param2,"zh"); } ); console.log(resultArray); 火狐浏览器 resu

  • mysql的中文数据按拼音排序的2个方法

    客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛..得到了2种答案,都可以.哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一. 复制代码 代码如下: SELECT `hotel_name` FROM `hotel_base` ORDER BY convert( `hotel_name` USING gbk ) COLLATE gbk_chinese_ci 方法二. 复制代码 代码如下: SELECT `hotel_id` , `hotel_nam

  • Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    一.创建拼音对照表 复制代码 代码如下: -- 创建汉字拼音对照临时表CREATE TABLE IF NOT EXISTS `t_base_pinyin` (  `pin_yin_` varchar(255) CHARACTER SET gbk NOT NULL,  `code_` int(11) NOT NULL,  PRIMARY KEY (`code_`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; 二.插入对照数据 复制代码 代码如下: -- 插入数据I

  • 基于jquery的使ListNav兼容中文首字拼音排序的实现代码

    效果图如下所示: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>中

随机推荐