golang strings 包

原创完整版:https://blog.csdn.net/chenbaoke/article/details/40318423

  • func Count(s, sep string) int

  • func Contains(s, substr string) bool // Contains 判断字符串 s 中是否包含子串 substr // 如果 substr 为空,则返回 true

  • func ContainsAny(s, chars string) bool // ContainsAny 判断字符串 s 中是否包含 chars 中的任何一个字符 // 如果 chars 为空,则返回 false

  • func ContainsRune(s string, r rune) bool // ContainsRune 判断字符串 s 中是否包含字符 r

  • func Index(s, sep string) int// Index 返回子串 sep 在字符串 s 中第一次出现的位置// 如果找不到,则返回 -1,如果 sep 为空,则返回 0。// 使用 Rabin-Karp 算法实现

  • func LastIndex(s, sep string) int // LastIndex 返回子串 sep 在字符串 s 中最后一次出现的位置// 如果找不到,则返回 -1,如果 sep 为空,则返回字符串的长度// 使用朴素字符串比较算法实现

  • func IndexAny(s, chars string) int
    // IndexAny 返回字符串 chars 中的任何一个字符在字符串 s 中第一次出现的位置(字节位置)
    // 如果找不到,则返回 -1,如果 chars 为空,则返回 -1

  • func SplitN(s, sep string, n int) []string
    // SplitN 以 sep 为分隔符,将 s 切分成多个子串,结果中不包含 sep 本身
    // 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
    // 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回
    // 参数 n 表示最多切分出几个子串,超出的部分将不再切分。
    // 如果 n 为 0,则返回 nil,如果 n 小于 0,则不限制切分个数,全部切分

  • func SplitAfterN(s, sep string, n int) []string
    // SplitAfterN 以 sep 为分隔符,将 s 切分成多个子串,结果中包含 sep 本身
    // 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
    // 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回
    // 参数 n 表示最多切分出几个子串,超出的部分将不再切分。
    // 如果 n 为 0,则返回 nil,如果 n 小于 0,则不限制切分个数,全部切分

  • func Split(s, sep string) []string
    // Split 以 sep 为分隔符,将 s 切分成多个子切片,结果中不包含 sep 本身
    // 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
    // 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回

  • func SplitAfter(s, sep string) []string
    // SplitAfter 以 sep 为分隔符,将 s 切分成多个子切片,结果中包含 sep 本身
    // 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
    // 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回

  • func FieldsFunc(s string, isSpace func(rune) bool) []string
    // FieldsFunc 以一个或多个满足 isSpace(rune) 的字符为分隔符,遍历s中的字符,遇到符合要求的字符即isSpace()返回true则分割
    // 将 s 切分成多个子串,结果中不包含分隔符本身。
    // 如果 s 中没有满足 f(rune) 的字符,则返回一个空列表。

  • func Join(a []string, sep string) string
    // Join 将 a 中的子串连接成一个单独的字符串,子串之间用 sep 分隔

  • func HasPrefix(s, prefix string) bool
    // HasPrefix 判断字符串 s 是否以 prefix 开头

  • func Map(mapping func(rune) rune, s string) string
    // Map 将 s 中满足 mapping(rune) 的字符替换为 mapping(rune) 的返回值。
    // 如果 mapping(rune) 返回负数,则相应的字符将被删除。

  • func Title(s string) string
    // Title 将 s 中的所有单词的首字母修改为其 Title 格式(即首字母大写)
    // BUG: Title 规则不能正确处理 Unicode 标点符号

  • func TrimFunc(s string, f func(rune) bool) string
    // TrimFunc 将删除 s 首尾连续的满足 f(rune) 的字符

    func isSlash(r rune) bool {
    return r == ‘\’ || r == ‘/’
    }
    func main() {
    s := “\\HostName\C\Windows\”
    ts := strings.TrimFunc(s, isSlash)
    fmt.Printf("%q\n", ts) // “HostName\C\Windows”

  • func Trim(s string, cutset string) string
    // Trim 将删除 s 首尾连续的包含在 cutset 中的字符,Trim都是对字符串头尾的修剪操作

    func main() {
    s := " Hello 世界! "
    ts := strings.Trim(s, " Helo!")
    fmt.Printf("%q\n", ts) // “世界”
    }

  • func EqualFold(s, t string) bool
    // EqualFold 判断 s 和 t 是否相等。忽略大小写,同时它还会对特殊字符进行转换
    // 比如将“ϕ”转换为“Φ”、将“DŽ”转换为“Dž”等,然后再进行比较

// replace.go


// Replacer 根据一个替换列表执行替换操作
type Replacer struct {
Replace(s string) string
WriteString(w io.Writer, s string) (n int, err error)
}


// NewReplacer 通过“替换列表”创建一个 Replacer 对象。
// 按照“替换列表”中的顺序进行替换,只替换非重叠部分。
// 如果参数的个数不是偶数,则抛出异常。
// 如果在“替换列表”中有相同的“查找项”,则后面重复的“查找项”会被忽略
func NewReplacer(oldnew …string) *Replacer


// Replace 返回对 s 进行“查找和替换”后的结果
// Replace 使用的是 Boyer-Moore 算法,速度很快
func (r *Replacer) Replace(s string) string

func main() {
srp := strings.NewReplacer(“Hello”, “你好”, “World”, “世界”, “!”, “!”)
s := “Hello World!Hello World!hello world!”
rst := srp.Replace(s)
fmt.Print(rst) // 你好 世界!你好 世界!hello world!
}
注:这两种写法均可.
func main() {

wl := []string{"Hello", "Hi", "Hello", "你好"}
srp := strings.NewReplacer(wl...)
s := "Hello World! Hello World! hello world!"
rst := srp.Replace(s)
fmt.Print(rst) // Hi World! Hi World! hello world!

}

// WriteString 对 s 进行“查找和替换”,然后将结果写入 w 中
func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)

func main() {
wl := []string{“Hello”, “你好”, “World”, “世界”, “!”, “!”}
srp := strings.NewReplacer(wl…)
s := “Hello World!Hello World!hello world!”
srp.WriteString(os.Stdout, s)
// 你好 世界!你好 世界!hello world!
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值