1 Star 0 Fork 0

瑞哥/rtool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CutString.go 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
Your Name 提交于 5个月前 . 2024/09/19 周四 11:19:55.90
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 ""
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ruige_fun/rtool.git
git@gitee.com:ruige_fun/rtool.git
ruige_fun
rtool
rtool
9de6c6d0596a

搜索帮助