Help us shape the future of Go! Take the 2026 Go Developer Survey

pinyin

package module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2015 License: MIT Imports: 2 Imported by: 0

README

go-pinyin

Build Status Coverage Status GoDoc

汉语拼音转换工具 Go 版。

Installation

go get -u github.com/mozillazg/go-pinyin

install CLI tool:

go get -u github.com/mozillazg/go-pinyin/pinyin
$ pinyin 中国人
zhōng guó rén

Documentation

API documentation can be found here: https://godoc.org/github.com/mozillazg/go-pinyin

Usage

package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	// 默认输出 [[zhong] [guo] [ren]]
	fmt.Println(pinyin.Pinyin(hans, a))

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

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

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

Documentation

Overview

Package pinyin : 汉语拼音转换工具

Index

Examples

Constants

View Source
const (
	Version   = "0.2.1"
	Author    = "mozillazg, 闲耘"
	License   = "MIT"
	Copyright = "Copyright (c) 2014 mozillazg, 闲耘"
)

Meta

View Source
const (
	Normal      = 0 // 普通风格,不带声调(默认风格)。如: pin yin
	Tone        = 1 // 声调风格1,拼音声调在韵母第一个字母上。如: pīn yīn
	Tone2       = 2 // 声调风格2,即拼音声调在各个拼音之后,用数字 [0-4] 进行表示。如: pi1n yi1n
	Initials    = 3 // 声母风格,只返回各个拼音的声母部分。如: 中国 的拼音 zh g
	FirstLetter = 4 // 首字母风格,只返回拼音的首字母部分。如: p y
	Finals      = 5 // 韵母风格1,只返回各个拼音的韵母部分,不带声调。如: ong uo
	FinalsTone  = 6 // 韵母风格2,带声调,声调在韵母第一个字母上。如: ōng uó
	FinalsTone2 = 7 // 韵母风格2,带声调,声调在各个拼音之后,用数字 [0-4] 进行表示。如: o1ng uo2
)

拼音风格(推荐)

View Source
const (
	NORMAL       = 0 // 普通风格,不带声调(默认风格)。如: pin yin
	TONE         = 1 // 声调风格1,拼音声调在韵母第一个字母上。如: pīn yīn
	TONE2        = 2 // 声调风格2,即拼音声调在各个拼音之后,用数字 [0-4] 进行表示。如: pi1n yi1n
	INITIALS     = 3 // 声母风格,只返回各个拼音的声母部分。如: 中国 的拼音 zh g
	FIRST_LETTER = 4 // 首字母风格,只返回拼音的首字母部分。如: p y
	FINALS       = 5 // 韵母风格1,只返回各个拼音的韵母部分,不带声调。如: ong uo
	FINALS_TONE  = 6 // 韵母风格2,带声调,声调在韵母第一个字母上。如: ōng uó
	FINALS_TONE2 = 7 // 韵母风格2,带声调,声调在各个拼音之后,用数字 [0-4] 进行表示。如: o1ng uo2
)

拼音风格(兼容之前的版本)

Variables

View Source
var Heteronym = false

默认配置:是否启用多音字模式

View Source
var PinyinDict = map[int]string{}/* 42013 elements not displayed */

拼音库,抓取自汉典网(zdic.net)。包含下列范围的 Unicode 字符:

CJK基本:[4E00-9FFF]       CJK扩展A:[3400-4DBF]
CJK扩展B:[20000-2A6DF]    CJK扩展C:[2A700-2B73F]
CJK扩展D:[2B740-2B81D]    CJK兼容扩展:[2F800-2FA1F]
CJK部首扩展:[2E80-2EFF]   CJK笔画:[31C0-31EF]
CJK康熙部首:[2F00-2FDF]   CJK兼容:[F900-FAFF]

注释掉了没有拼音的字符。

View Source
var Separator = "-"

默认配置: `Slug` 中 Join 所用的分隔符

View Source
var Style = Normal

默认配置:风格

Functions

func LazyPinyin

func LazyPinyin(s string, a Args) []string

LazyPinyin 汉字转拼音,与 `Pinyin` 的区别是: 返回值类型不同,并且不支持多音字模式,每个汉字只取第一个音.

Example
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	fmt.Println(pinyin.LazyPinyin(hans, a))
}
Output:
[zhong guo ren]

func Pinyin

func Pinyin(s string, a Args) [][]string

Pinyin 汉字转拼音,支持多音字模式.

Example (Default)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	fmt.Println("default:", pinyin.Pinyin(hans, a))
}
Output:
default: [[zhong] [guo] [ren]]
Example (Finals)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.Finals
	fmt.Println(pinyin.Pinyin(hans, a))
}
Output:
[[ong] [uo] [en]]
Example (FinalsTone)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.FinalsTone
	fmt.Println(pinyin.Pinyin(hans, a))
}
Output:
[[ōng] [uó] [én]]
Example (FinalsTone2)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.FinalsTone2
	fmt.Println(pinyin.Pinyin(hans, a))
}
Output:
[[o1ng] [uo2] [e2n]]
Example (FirstLetter)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.FirstLetter
	fmt.Println(pinyin.Pinyin(hans, a))
}
Output:
[[z] [g] [r]]
Example (Heteronym)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Heteronym = true
	a.Style = pinyin.Tone2
	fmt.Println(pinyin.Pinyin(hans, a))
}
Output:
[[zho1ng zho4ng] [guo2] [re2n]]
Example (Initials)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.Initials
	fmt.Println("Initials:", pinyin.Pinyin(hans, a))
}
Output:
Initials: [[zh] [g] [r]]
Example (Normal)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.Normal
	fmt.Println("Normal:", pinyin.Pinyin(hans, a))
}
Output:
Normal: [[zhong] [guo] [ren]]
Example (Tone)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.Tone
	fmt.Println("Tone:", pinyin.Pinyin(hans, a))
}
Output:
Tone: [[zhōng] [guó] [rén]]
Example (Tone2)
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	a.Style = pinyin.Tone2
	fmt.Println("Tone2:", pinyin.Pinyin(hans, a))
}
Output:
Tone2: [[zho1ng] [guo2] [re2n]]

func SinglePinyin

func SinglePinyin(r rune, a Args) []string

SinglePinyin 把单个 `rune` 类型的汉字转换为拼音.

func Slug

func Slug(s string, a Args) string

Slug join `LazyPinyin` 的返回值.

Example
package main

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

func main() {
	hans := "中国人"
	a := pinyin.NewArgs()
	fmt.Println(pinyin.Slug(hans, a))
}
Output:
zhong-guo-ren

Types

type Args

type Args struct {
	Style     int    // 拼音风格(默认: Normal)
	Heteronym bool   // 是否启用多音字模式(默认:禁用)
	Separator string // Slug 中使用的分隔符(默认:-)
}

Args 配置信息

func NewArgs added in v0.2.0

func NewArgs() Args

NewArgs 返回包含默认配置的 `Args`

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL