Golang实现高性能 strip ,去除字符串两端无用字符集

转载 https://blog.csdn.net/a1053904672/article/details/90758573

package main

import "fmt"


func strip(s_ string, chars_ string) string {
    s , chars := []rune(s_) , []rune(chars_)
    length := len(s)
    max := len(s) - 1
    l, r := true, true //标记当左端或者右端找到正常字符后就停止继续寻找
    start, end := 0, max
    tmpEnd := 0
    charset := make(map[rune]bool) //创建字符集,也就是唯一的字符,方便后面判断是否存在
    for i := 0; i < len(chars); i++ {
        charset[chars[i]] = true
    }
    for i := 0; i < length; i++ {
        if _, exist := charset[s[i]]; l && !exist {
            start = i
            l = false
        }
        tmpEnd = max - i
        if _, exist := charset[s[tmpEnd]]; r && !exist {
            end = tmpEnd
            r = false
        }
        if !l && !r{
            break
        }
    }
    if l && r {  // 如果左端和右端都没找到正常字符,那么表示该字符串没有正常字符
        return ""
    }
    return string(s[start : end+1])
}

func main() {
    s := "\r\t///---- /ds / / / / /// /\n\r\t"
    s = strip(s, "/ \n\r\t")
    fmt.Println(s)
}