From 7b968152fb47cd710db4f9e82bf91f57bbc54e8a Mon Sep 17 00:00:00 2001 From: tengge1 <930372551@qq.com> Date: Thu, 2 Apr 2020 21:00:05 +0800 Subject: [PATCH] pinyin helper --- ShadowEditor.Server.Go/go.mod | 2 ++ ShadowEditor.Server.Go/go.sum | 8 ++++++ ShadowEditor.Server.Go/helper/download.go | 1 + .../helper/download_test.go | 1 + ShadowEditor.Server.Go/helper/http.go | 1 + ShadowEditor.Server.Go/helper/http_test.go | 1 + ShadowEditor.Server.Go/helper/pinyin.go | 26 +++++++++++++++++++ ShadowEditor.Server.Go/helper/pinyin_test.go | 18 +++++++++++++ 8 files changed, 58 insertions(+) create mode 100644 ShadowEditor.Server.Go/helper/download.go create mode 100644 ShadowEditor.Server.Go/helper/download_test.go create mode 100644 ShadowEditor.Server.Go/helper/http.go create mode 100644 ShadowEditor.Server.Go/helper/http_test.go create mode 100644 ShadowEditor.Server.Go/helper/pinyin.go create mode 100644 ShadowEditor.Server.Go/helper/pinyin_test.go diff --git a/ShadowEditor.Server.Go/go.mod b/ShadowEditor.Server.Go/go.mod index bd6c9896..a2e5dc9c 100644 --- a/ShadowEditor.Server.Go/go.mod +++ b/ShadowEditor.Server.Go/go.mod @@ -14,6 +14,7 @@ require ( github.com/klauspost/compress v1.10.3 // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/mapstructure v1.2.2 // indirect + github.com/mozillazg/go-pinyin v0.16.0 github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect github.com/pelletier/go-toml v1.6.0 // indirect @@ -24,6 +25,7 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.6.2 + github.com/yanyiwu/gojieba v1.1.2 // indirect go.mongodb.org/mongo-driver v1.3.1 golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a // indirect diff --git a/ShadowEditor.Server.Go/go.sum b/ShadowEditor.Server.Go/go.sum index ff6a1ddf..d7e619dc 100644 --- a/ShadowEditor.Server.Go/go.sum +++ b/ShadowEditor.Server.Go/go.sum @@ -177,6 +177,7 @@ github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -186,6 +187,8 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/mitchellh/mapstructure v1.2.2 h1:dxe5oCinTXiTIcfgmZecdCzPmAJKd46KsCWc35r0TV4= github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mozillazg/go-pinyin v0.16.0 h1:QjOLwdElImhQd8qkFZtzRjaa6mmeWAi43cXV5qUFGJ8= +github.com/mozillazg/go-pinyin v0.16.0/go.mod h1:AXvf5sdmrjjWIzV1VcaPD6Y57FwFsaqd2OP67HM2cf4= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -284,6 +287,10 @@ github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc h1:n+nNi93yXLkJvKwX github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yanyiwu/gojieba v1.1.0 h1:rx+kNP0L7zn+4Zyo1d8aLCfXt3BmIkWQ26FCbGnw1bc= +github.com/yanyiwu/gojieba v1.1.0/go.mod h1:0AAj9tOG6WWXQ5FNffl4ruBy/hP7bHl2gs+YiDi1aYs= +github.com/yanyiwu/gojieba v1.1.2 h1:BMwKCwg3G+Nw/Ctqzm/gNgN/6Ljf0Y4f7ddKlzTA+TM= +github.com/yanyiwu/gojieba v1.1.2/go.mod h1:54wkP7sMJ6bklf7yPl6F+JG71dzVUU1WigZbR47nGdY= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.mongodb.org/mongo-driver v1.3.1 h1:op56IfTQiaY2679w922KVWa3qcHdml2K/Io8ayAOUEQ= @@ -341,6 +348,7 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775 h1:TC0v2RSO1u2kn1ZugjrFXkRZAEaqMN/RW+OTZkBzmLE= golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/ShadowEditor.Server.Go/helper/download.go b/ShadowEditor.Server.Go/helper/download.go new file mode 100644 index 00000000..947317d2 --- /dev/null +++ b/ShadowEditor.Server.Go/helper/download.go @@ -0,0 +1 @@ +package helper diff --git a/ShadowEditor.Server.Go/helper/download_test.go b/ShadowEditor.Server.Go/helper/download_test.go new file mode 100644 index 00000000..947317d2 --- /dev/null +++ b/ShadowEditor.Server.Go/helper/download_test.go @@ -0,0 +1 @@ +package helper diff --git a/ShadowEditor.Server.Go/helper/http.go b/ShadowEditor.Server.Go/helper/http.go new file mode 100644 index 00000000..947317d2 --- /dev/null +++ b/ShadowEditor.Server.Go/helper/http.go @@ -0,0 +1 @@ +package helper diff --git a/ShadowEditor.Server.Go/helper/http_test.go b/ShadowEditor.Server.Go/helper/http_test.go new file mode 100644 index 00000000..947317d2 --- /dev/null +++ b/ShadowEditor.Server.Go/helper/http_test.go @@ -0,0 +1 @@ +package helper diff --git a/ShadowEditor.Server.Go/helper/pinyin.go b/ShadowEditor.Server.Go/helper/pinyin.go new file mode 100644 index 00000000..c63ef5d7 --- /dev/null +++ b/ShadowEditor.Server.Go/helper/pinyin.go @@ -0,0 +1,26 @@ +package helper + +import ( + "github.com/mozillazg/go-pinyin" +) + +// ConvertToPinYin 汉字转拼音 +func ConvertToPinYin(text string) (model PinYinModel) { + args := pinyin.NewArgs() + pinyin := pinyin.LazyPinyin(text, args) + + for _, item := range pinyin { + model.TotalPinYin = append(model.TotalPinYin, item) + model.FirstPinYin = append(model.FirstPinYin, string(item[0])) + } + + return +} + +// PinYinModel 返回拼音模型 +type PinYinModel struct { + // TotalPinYin 全拼 + TotalPinYin []string + // FirstPinYin 首拼 + FirstPinYin []string +} diff --git a/ShadowEditor.Server.Go/helper/pinyin_test.go b/ShadowEditor.Server.Go/helper/pinyin_test.go new file mode 100644 index 00000000..081049bc --- /dev/null +++ b/ShadowEditor.Server.Go/helper/pinyin_test.go @@ -0,0 +1,18 @@ +package helper + +import "testing" + +func TestConvertToPinYin(t *testing.T) { + text := "中国人" + pinyin := ConvertToPinYin(text) + + if pinyin.FirstPinYin[0] != "z" || pinyin.FirstPinYin[1] != "g" || pinyin.FirstPinYin[2] != "r" { + t.Errorf("first pinyin should be `z` `g` `r`, get `%v` `%v` `%v`", pinyin.FirstPinYin[0], pinyin.FirstPinYin[1], pinyin.FirstPinYin[2]) + return + } + + if pinyin.TotalPinYin[0] != "zhong" || pinyin.TotalPinYin[1] != "guo" || pinyin.TotalPinYin[2] != "ren" { + t.Errorf("first pinyin should be `zhong` `guo` `ren`, get `%v` `%v` `%v`", pinyin.TotalPinYin[0], pinyin.TotalPinYin[1], pinyin.TotalPinYin[2]) + return + } +}