代码拉取完成,页面将自动刷新
package rtool
import (
"cmp"
"strings"
)
// CutStringByIndex 截取字符串,根据指定的开始下标和结束下标
// src:切片源
// start:开始下标,第一个为0
// end:结束位置,注意不包含结束的下标元素
func CutStringByIndex(src string, start int, end int) string {
if start <= -1 {
start = 0
}
if end <= start {
return ""
}
length := len(src)
if length <= start {
return ""
}
if length >= end {
return src[start:]
}
return src[start:end]
}
// CutSplitByIndex 截取切片,根据指定的开始下标和结束下标
// src:切片源
// start:开始下标,第一个为0
// end:结束位置,注意不包含结束的下标元素
func CutSplitByIndex[T cmp.Ordered](src []T, start int, end int) []T {
if start <= -1 {
start = 0
}
if end <= start {
return []T{}
}
length := len(src)
if length <= start {
return []T{}
}
if length >= end {
return src[start:]
}
return src[start:end]
}
// CutSplitByPage 截取切片,根据指定的页码和大小
// src:切片源
// page:页码,如果输入为0,则自动提升为1.
// size:页大小
func CutSplitByPage[T cmp.Ordered](src []T, page uint, size uint) []T {
if page <= 0 {
page = 1
}
start := (page - 1) * size //计算开始位置
end := page * size //计算结束位置
if start > uint(len(src)) || end < start {
return nil
}
if end > uint(len(src)) {
return src[start:]
}
return src[start:end]
}
// CutStringBySubString 截取字符串,根据指定的开始子串和结束子串。如果不存在则返回空字符串。
// src:源字符串
// start:开始子串,如果 start 为空,则返回 end 前面那段。
// end:结束子串,如果 end 为空,则返回 start 后面那段。
// 如果 start 和 end 都为空,则返回原字符串 src 。
func CutStringBySubString(src string, start string, end string) string {
if start == "" && end == "" {
return src
}
if start == "" {
before, _, _ := strings.Cut(src, end)
return before
}
if end == "" {
_, after, _ := strings.Cut(src, start)
return after
}
_, after, found := strings.Cut(src, start)
if found {
before, _, f := strings.Cut(after, end)
if f {
return before
}
}
return ""
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。