lancet
lancet copied to clipboard
strutil中是否可以增加SubBetween方法?
版本号:
v2.2.9
问题描述
strutil中是否可以增加SubBetween方法? 方法的思路大概是,截取指定字符串中间的内容,且不包含指定的字符串。
代码示例
package main
import (
"fmt"
"strings"
)
func main() {
str := "abcdefgh"
// 输出cde
fmt.Println(SubBetween(str, "b", "f"))
}
// SubBetween 截取指定字符串中间的内容 且不包含指定的字符串
func SubBetween(str string, prefix string, suffix string) string {
// 找到前缀字符串在原字符串中的位置
prefixIndex := strings.Index(str, prefix)
if prefixIndex == -1 {
// 如果前缀不存在 则返回空字符串
return ""
}
// 移动到前缀之后的索引位置
prefixIndex += len(prefix)
// 找到后缀字符串在原字符串中的位置
suffixIndex := strings.Index(str, suffix)
if suffixIndex == -1 || suffixIndex < prefixIndex {
// 如果后缀不存在或者在后缀之前 则返回空字符串
return ""
}
// 截取中间的字符串
return str[prefixIndex:suffixIndex]
}
ok, 可以提PR @MrXionGe
ok, 可以提PR @MrXionGe
我可以吗?😂😂😂我只是刚刚入门Golang,说实话,我对自己的代码没有信心。我觉得您可以看下我这段代码片段的思路,然后以新特性的方式加入到新版本中。
ok, 可以提PR @MrXionGe
我可以吗?😂😂😂我只是刚刚入门Golang,说实话,我对自己的代码没有信心。我觉得您可以看下我这段代码片段的思路,然后以新特性的方式加入到新版本中。
可以加入到新版本中,另外,可以用strings.Cut实现这个功能,参考以下代码:
func SubInBetween(str string, start string, end string) string {
if _, after, ok := strings.Cut(str, start); ok {
if before, _, ok := strings.Cut(after, end); ok {
return before
}
}
return ""
}
v2.3.0已添加SubInBetween方法