代码拉取完成,页面将自动刷新
package rtool
import (
"strings"
"unicode"
)
// ToTitle 将字符串的首字母转换为大写
func ToTitle(str string) string {
if len(str) <= 0 {
return str
}
var _tempStr = []rune(strings.ToLower(str))
if unicode.IsLetter(_tempStr[0]) {
_tempStr[0] = unicode.ToUpper(_tempStr[0])
}
return string(_tempStr)
}
// ToUATitle 每个单词的首字母转换为大写
func ToUATitle(str string) string {
if len(str) <= 0 {
return str
}
var _tempStr = []rune(strings.ToLower(str))
var first = true
for i, d := range _tempStr {
if unicode.IsLetter(d) {
if first {
_tempStr[i] = unicode.ToUpper(_tempStr[i])
first = false
continue
}
continue
}
if unicode.IsNumber(d) {
if first {
first = false
continue
}
continue
}
first = true
}
return string(_tempStr)
}
// JoinString 拆分再合并字符串
// src:需要拆分的字符串模板,比如:4e6f9e19f397e8b3e42716aaf8f80589f1ed42c1272f7e7b25e5c5de7d88b2d1
// substr:需要往中间添加的子字符串,比如:-
// length:第 1 段的长度
// lengths:后续 n 段各自的长度
// 案例 JoinString(s, "-", 1, 2, 3, 4) 返回:4-e6-f9e-19f3
func JoinString(src string, substr string, length int, lengths ...int) string {
lengths = append([]int{length}, lengths...)
var rt strings.Builder
for i, d := range lengths {
if len(src) <= d {
rt.WriteString(src)
break
}
rt.WriteString(src[:d])
if i != len(lengths)-1 {
rt.WriteString(substr)
}
src = src[d:]
}
return rt.String()
}
// Join 拆分再合并
// src:需要拆分的模板,比如:[]rune("4e6f9e19f397e8b3e42716aaf8f80589f1ed42c1272f7e7b25e5c5de7d88b2d1")
// substr:需要往中间添加的子模板,比如:[]rune("-")
// length:第 1 段的长度
// lengths:后续 n 段各自的长度
// 案例 Join([]rune(s), []rune("-"), 1, 2, 3, 4) 返回:[]rune("4-e6-f9e-19f3")
func Join[T IntUintBoolByteStringFloat](src []T, substr []T, length int, lengths ...int) []T {
lengths = append([]int{length}, lengths...)
var rt []T
for i, d := range lengths {
if len(src) <= d {
rt = append(rt, src...)
break
}
rt = append(rt, src[:d]...)
if i != len(lengths)-1 {
rt = append(rt, substr...)
}
src = src[d:]
}
return rt
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。