2 Star 0 Fork 0

NorthWind / golang-pkg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
string.go 6.94 KB
一键复制 编辑 原始数据 按行查看 历史
xingshun.yang 提交于 2021-10-26 16:35 . update
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
// 字符串比较 ,可用 == < > 代替
fmt.Println(strings.Compare("a", "b")) // -1
fmt.Println(strings.Compare("a", "a")) // 0
fmt.Println(strings.Compare("b", "a")) // 1
// 是否包含
fmt.Println(strings.Contains("我爱中国", "中国")) // true
fmt.Println(strings.Contains("我爱中国", "中国人")) // false
fmt.Println(strings.Contains("我爱中国", "")) // true
fmt.Println(strings.Contains("", "")) // true
// 是否任意包含
fmt.Println(strings.ContainsAny("我爱中国", "中国万岁")) // true
fmt.Println(strings.ContainsAny("user", "ui")) // true
fmt.Println(strings.Contains("我爱中国", "")) // true
fmt.Println(strings.Contains("", "")) // true
// 是否包含 unicode码
fmt.Println(strings.ContainsRune("abc", 97)) // true
fmt.Println(strings.ContainsRune("time", 97)) // false
// 计算包含数量
fmt.Println(strings.Count("cheese", "e")) // 3
fmt.Println(strings.Count("five", "")) // 5
// 不区分大小的比较
fmt.Println(strings.EqualFold("Go", "go")) // true
// 按空格(可多个空格)分割
fmt.Printf("Fields are:%q\n", strings.Fields(" 我 爱 中国")) // Fields are:["我" "爱" "中国"] 类型:[]string
// 按自定义函数分类
fmt.Printf("fields are:%q\n", strings.FieldsFunc(" 我;爱,中,国...", func(r rune) bool {
return !unicode.IsLetter(r) && !unicode.IsNumber(r)
})) // fields are:["我" "爱" "中" "国"]
// 判断前缀
fmt.Println(strings.HasPrefix("Gopher", "go")) // false
fmt.Println(strings.HasPrefix("Gopher", "Go")) // true
fmt.Println(strings.HasPrefix("Gopher", "")) // true
// 判断后缀
fmt.Println(strings.HasSuffix("Gopher", "er")) // true
// 查找字符在 s 中的位置,不存在返回 -1
fmt.Println(strings.Index("chicken", "ch")) // 0
fmt.Println(strings.Index("chicken", "a")) // -1
// 查找第一个任意字符在 s 中的位置,不存在返回 -1
fmt.Println(strings.IndexAny("chicken", "aeiouy")) // 2
fmt.Println(strings.IndexAny("chicken", "")) // -1
fmt.Println(strings.IndexAny("chicken", "wasd")) // -1
// 查找 字节 在 s中的位置
fmt.Println(strings.IndexByte("golang", 'l')) // 2
// 查找 utf8 字节码 在 s中的位置
fmt.Println(strings.IndexRune("golang", 'a')) // 3
// 查找第一个满足函数条件的位置,不存在返回 -1
isHan := func(r rune) bool {
return unicode.Is(unicode.Han, r) // 查找汉字
}
fmt.Println(strings.IndexFunc("Hello, world", isHan)) // -1
fmt.Println(strings.IndexFunc("Hello, 世界", isHan)) // 7
// 查找字符第后一个在 s 中的位置,不存在返回 -1
fmt.Println(strings.LastIndex("chicken", "ch")) // 0
fmt.Println(strings.LastIndex("chicken", "a")) // -1
// 查找最后一个任意字符在 s 中的索引,不存在返回 -1
fmt.Println(strings.LastIndexAny("chicken", "aeiouy")) // 5
fmt.Println(strings.LastIndexAny("chicken", "")) // -1
fmt.Println(strings.LastIndexAny("chicken", "wasd")) // -1
// 查找 最后一个字节 在 s中的索引
fmt.Println(strings.LastIndexByte("golang", 'n')) // 4
// 查找 最后一个满足函数条件的索引,不存在返回 -1
fmt.Println(strings.LastIndexFunc("Hello, world", isHan)) // -1
fmt.Println(strings.LastIndexFunc("Hello, 世界", isHan)) // 10
// 拼接
s := []string{"我", "爱", "中国"}
fmt.Println(strings.Join(s, ",")) // 我,爱,中国
// Map返回字符串s的一个副本,其中所有字符都根据映射函数进行了修改。
// 如果映射返回负值,则该字符将从字符串中删除,不进行替换。
rot13 := func(r rune) rune {
switch {
case r >= 'A' && r <= 'Z':
return 'A' + (r-'A'+13)%26
case r >= 'a' && r <= 'z':
return 'a' + (r-'a'+13)%26
}
return r
}
fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher...")) // 'Gjnf oevyyvt naq gur fyvgul tbcure...
// 按次数指定重复,必须 `count >= 0`
fmt.Println("ba" + strings.Repeat("na", 2)) // banana
// 替换 `n = -1` 替换所有
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) // oinky oinky oink
fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) // moo moo moo
// 替换所有
fmt.Println(strings.ReplaceAll("oink oink oink", "oink", "moo")) // moo moo moo
fmt.Println()
// 分割
fmt.Printf("%q\n", strings.SplitAfter("a,b,c", ",")) // ["a," "b," "c"]
// 指定最大分割数量
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", 2)) // ["a," "b,c"]
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", -1)) // ["a," "b," "c"]
fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2)) // ["a" "b,c"]
fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", -1)) // ["a" "b" "c"]
// 单词首字母转大写
fmt.Println(strings.Title("hello world")) // Hello World
fmt.Println(strings.Title("хлеб")) // Хлеб
// 所有字母转大写
fmt.Println(strings.ToTitle("Gopher")) // GOPHER
// 大小写转换
fmt.Println(strings.ToLower("HELLO")) // hello
fmt.Println(strings.ToUpper("hello")) // HELLO
// 指定大小写映射的转换
fmt.Println(strings.ToTitleSpecial(unicode.TurkishCase, "örnek iş")) // ÖRNEK İŞ
fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "ÖRNEK İŞ")) // örnek iş
fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, "örnek iş")) // ÖRNEK İŞ
// 每次运行无效的UTF-8字节序列时,都会被替换字符串替换,替换字符串可能为空。
fmt.Println(strings.ToValidUTF8("我爱中国^_^", "")) // 我爱中国^_^
// 去除两边指定字符
fmt.Println(strings.Trim(" 我 爱中国 ", " ")) // 我 爱中国
fmt.Println(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡")) // Hello, Gophers
// 去除左边指定字符
fmt.Println(strings.TrimLeft("¡¡¡Hello, Gophers!!!", "!¡")) // Hello, Gophers!!!
// 去除左边指定函数返回true的字符
fmt.Println(strings.TrimLeftFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {
return !unicode.IsLetter(r) && !unicode.IsNumber(r)
})) // Hello, Gophers!!!
// 去除指定前缀
fmt.Println(strings.TrimPrefix("我爱中国", "我爱")) //中国
// 去除指定后缀
fmt.Println(strings.TrimSuffix("我爱中国", "中国")) //我爱
// 去除两边空白
fmt.Println(strings.TrimSpace(" \\t\\n Hello, Gophers \\n\\t\\r\\n")) // \t\n Hello, Gophers \n\t\r\n
// type Replacer
replacer := strings.NewReplacer("<", "&lt;", ">", "&gt;")
fmt.Println(replacer.Replace("This is <b>Html</b>!")) // This is &lt;b&gt;Html&lt;/b&gt;!
// type Builder
var b strings.Builder
fmt.Fprintf(&b,"%d...",1)
b.WriteString("ignition ")
b.WriteRune(98)
b.Write([]byte{97,69})
fmt.Println(b.String()) // 1...ignition baE
// type Reader
r := strings.NewReader("hello,world")
fmt.Println("Reader:")
fmt.Println("Len:",r.Len()) // Len: 11
fmt.Println("Size:",r.Size()) // Size: 11
fmt.Println(r.ReadRune()) // 104 1 <nil>
var r1 strings.Reader
r1.Reset("Hi")
fmt.Println(r1.Len()) //2
}
Go
1
https://gitee.com/xskit/golang-pkg.git
git@gitee.com:xskit/golang-pkg.git
xskit
golang-pkg
golang-pkg
master

搜索帮助