代码拉取完成,页面将自动刷新
package helper
import (
"strings"
)
func GetLastSymBolAfterStr(source string, symbol string) (res string) {
index := strings.LastIndex(source, symbol) + 1
res = source[index:]
return
}
func GetFileNameByUri(uri string) (res string) {
source := GetLastSymBolAfterStr(uri, "/")
index := strings.LastIndex(source, ".")
res = source[:index]
return
}
func Ucfirst(str string) string {
if str == "" {
return str
}
clist := []rune(str)
if len(clist) == 1 {
return strings.ToUpper(str)
}
//97-122 代表字母
if clist[0] >= 97 && clist[0] <= 122 {
clist[0] -= 32
return string(clist[0]) + string(clist[1:])
} else {
return str
}
}
//下划线模式
func SnakeCase(s string) string {
data := make([]byte, 0, len(s)*2)
j := false
num := len(s)
for i := 0; i < num; i++ {
d := s[i]
if i > 0 && d >= 'A' && d <= 'Z' && j {
data = append(data, '_')
}
if d != '_' {
j = true
}
data = append(data, d)
}
return strings.ToLower(string(data[:]))
}
//k 是控制首写字母大小写的,
//j 预计控制-后面的首写字母
func CamelCase(s string) string {
data := make([]byte, 0, len(s))
j := false
//这个变量的目的应该越过第一个字母
k := false
num := len(s) - 1
for i := 0; i < num; i++ {
d := s[i]
//当前字母 大些 ,k为false
if k == false && d >= 'A' && d <= 'Z' {
//fmt.Printf("这里k变true %s(%v): (k=%v),(j=%v)\n", string(d), d, k, j)
k = true
}
//当前小写 j|| k 为false 改变为大写
if d >= 'a' && d <= 'z' && (j || k == false) {
d = d - 32
j = false
k = true
//fmt.Printf("这里变大写,j变false ,k 变true %s(%v): (k=%v),(j=%v)\n", string(d), d, k, j)
}
//这是取_后面的
if k && d == '_' && num > i && s[i+1] >= 'a' && s[i+1] <= 'z' {
j = true
//fmt.Printf("这里j变true %s(%v): (k=%v),(j=%v)\n", string(d), d, k, j)
continue
}
//fmt.Printf("%s(%v): (k=%v),(j=%v)\n", string(d), d, k, j)
//fmt.Println("===========下次循环=========")
data = append(data, d)
}
return string(data[:])
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。