feat: add SubInBetween

This commit is contained in:
dudaodong
2024-02-06 16:47:30 +08:00
parent fa298b740d
commit f9e047f190
5 changed files with 108 additions and 2 deletions

View File

@@ -60,6 +60,7 @@ import (
- [ContainsAll](#ContainsAll) - [ContainsAll](#ContainsAll)
- [ContainsAny](#ContainsAny) - [ContainsAny](#ContainsAny)
- [RemoveWhiteSpace](#RemoveWhiteSpace) - [RemoveWhiteSpace](#RemoveWhiteSpace)
- [SubInBetween](#SubInBetween)
<div STYLE="page-break-after: always;"></div> <div STYLE="page-break-after: always;"></div>
@@ -1096,10 +1097,10 @@ import (
func main() { func main() {
result1 := strutil.IsNotBlank("") result1 := strutil.IsNotBlank("")
result2 := strutil.IsNotBlank(" ") result2 := strutil.IsNotBlank(" ")
result3 := strutil.IsNotBlank("\t\v\f\n") result3 := strutil.IsNotBlank("\t\v\f\n")
result4 := strutil.IsNotBlank(" 中文") result4 := strutil.IsNotBlank(" 中文")
result5 := strutil.IsNotBlank(" world ") result5 := strutil.IsNotBlank(" world ")
fmt.Println(result1) fmt.Println(result1)
fmt.Println(result2) fmt.Println(result2)
@@ -1462,3 +1463,36 @@ func main() {
// hello world // hello world
} }
``` ```
### <span id="SubInBetween">SubInBetween</span>
<p>获取字符串中指定的起始字符串start和终止字符串end直接的子字符串。</p>
<b>函数签名:</b>
```go
func SubInBetween(str string, start string, end string) string
```
<b>示例:</b>
```go
import (
"fmt"
"github.com/duke-git/lancet/v2/strutil"
)
func main() {
str := "abcde"
result1 := strutil.SubInBetween(str, "", "de")
result2 := strutil.SubInBetween(str, "a", "d")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// abc
// bc
}
```

View File

@@ -1463,3 +1463,37 @@ func main() {
// hello world // hello world
} }
``` ```
### <span id="SubInBetween">SubInBetween</span>
<p>Return substring between the start and end position(excluded) of source string.</p>
<b>Signature:</b>
```go
func SubInBetween(str string, start string, end string) string
```
<b>Example:</b>
```go
import (
"fmt"
"github.com/duke-git/lancet/v2/strutil"
)
func main() {
str := "abcde"
result1 := strutil.SubInBetween(str, "", "de")
result2 := strutil.SubInBetween(str, "a", "d")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// abc
// bc
}
```

View File

@@ -574,3 +574,15 @@ func RemoveWhiteSpace(str string, repalceAll bool) string {
return strings.TrimSpace(str) return strings.TrimSpace(str)
} }
// SubInBetween return substring between the start and end position(excluded) of source string.
// Play: todo
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 ""
}

View File

@@ -653,3 +653,17 @@ func ExampleRemoveWhiteSpace() {
// helloworld // helloworld
// hello world // hello world
} }
func ExampleSubInBetween() {
str := "abcde"
result1 := SubInBetween(str, "", "de")
result2 := SubInBetween(str, "a", "d")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// abc
// bc
}

View File

@@ -566,3 +566,15 @@ func TestRemoveWhiteSpace(t *testing.T) {
assert.Equal("helloworld", RemoveWhiteSpace(str, true)) assert.Equal("helloworld", RemoveWhiteSpace(str, true))
assert.Equal("hello world", RemoveWhiteSpace(str, false)) assert.Equal("hello world", RemoveWhiteSpace(str, false))
} }
func TestSubInBetween(t *testing.T) {
assert := internal.NewAssert(t, "TestSubInBetween")
str := "abcde"
assert.Equal("", SubInBetween(str, "", ""))
assert.Equal("ab", SubInBetween(str, "", "c"))
assert.Equal("bc", SubInBetween(str, "a", "d"))
assert.Equal("", SubInBetween(str, "a", ""))
assert.Equal("", SubInBetween(str, "a", "f"))
}