func main() {
// 定义转换规则
var _MyCase = unicode.SpecialCase{
// 将半角逗号替换为全角逗号,ToTitle 不处理
unicode.CaseRange{',', ',',
[unicode.MaxCase]rune{',' - ',', ',' - ',', 0}},
// 将半角句号替换为全角句号,ToTitle 不处理
unicode.CaseRange{'.', '.',
[unicode.MaxCase]rune{'。' - '.', '。' - '.', 0}},
// 将 ABC 分别替换为全角的 ABC、abc,ToTitle 不处理
unicode.CaseRange{'A', 'C',
[unicode.MaxCase]rune{'A' - 'A', 'a' - 'A', 0}},
}
s := "ABCDEF,abcdef."
us := strings.ToUpperSpecial(_MyCase, s)
fmt.Printf("%qn", us) // "ABCDEF,ABCDEF。"
ls := strings.ToLowerSpecial(_MyCase, s)
fmt.Printf("%qn", ls) // "abcdef,abcdef。"
ts := strings.ToTitleSpecial(_MyCase, s)
fmt.Printf("%qn", ts) // "ABCDEF,ABCDEF."
}
------------------------------------------------------------
// Title 将 s 中的所有单词的首字母修改为其 Title 格式
// BUG: Title 规则不能正确处理 Unicode 标点符号
func Title(s string) string
func main() {
s := "heLLo worLd"
ts := strings.Title(s)
fmt.Printf("%qn", ts) // "HeLLo WorLd"
}
------------------------------------------------------------
// TrimLeftFunc 将删除 s 头部连续的满足 f(rune) 的字符
func TrimLeftFunc(s string, f func(rune) bool) string
------------------------------------------------------------
// TrimRightFunc 将删除 s 尾部连续的满足 f(rune) 的字符
func TrimRightFunc(s string, f func(rune) bool) string
func isSlash(r rune) bool {
return r == '' || r == '/'
}func main() {
s := "HostNameCWindows"
ts := strings.TrimRightFunc(s, isSlash)
fmt.Printf("%qn", ts) // "HostNameCWindows"
}
------------------------------------------------------------
// TrimFunc 将删除 s 首尾连续的满足 f(rune) 的字符
func TrimFunc(s string, f func(rune) bool) stringfunc isSlash(r rune) bool {
return r == '' || r == '/'
}
func main() {
s := "HostNameCWindows"
ts := strings.TrimFunc(s, isSlash)
fmt.Printf("%qn", ts) // "HostNameCWindows"
}
------------------------------------------------------------
// 返回 s 中第一个满足 f(rune) 的字符的字节位置。
// 如果没有满足 f(rune) 的字符,则返回 -1
func IndexFunc(s string, f func(rune) bool) int










