str 包新增 string 流操作
This commit is contained in:
parent
c95b206592
commit
6a64fea5b2
|
@ -0,0 +1,146 @@
|
|||
package str
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type String string
|
||||
|
||||
func New(s string) *String {
|
||||
return (*String)(&s)
|
||||
}
|
||||
|
||||
// String 返回字符串
|
||||
func (s *String) String() string {
|
||||
return string(*s)
|
||||
}
|
||||
|
||||
// Append 追加字符串
|
||||
func (s *String) Append(str *String) *String {
|
||||
*s = String(string(*s) + string(*str))
|
||||
return s
|
||||
}
|
||||
|
||||
// Join 以指定字符连接字符串
|
||||
func (s *String) Join(sep string) *String {
|
||||
*s = String(strings.Join([]string{string(*s), sep}, ""))
|
||||
return s
|
||||
}
|
||||
|
||||
// QueryEscape 对字符串进行 URL 编码
|
||||
func (s *String) QueryEscape() *String {
|
||||
*s = String(strings.ReplaceAll(url.QueryEscape(string(*s)), "+", "%20"))
|
||||
return s
|
||||
}
|
||||
|
||||
// Replace 替换字符串
|
||||
func (s *String) Replace(old, new string, n int) *String {
|
||||
*s = String(strings.Replace(string(*s), old, new, n))
|
||||
return s
|
||||
}
|
||||
|
||||
// ReplaceAll 替换字符串
|
||||
func (s *String) ReplaceAll(old, new string) *String {
|
||||
*s = String(strings.ReplaceAll(string(*s), old, new))
|
||||
return s
|
||||
}
|
||||
|
||||
// Trim 去除字符串两端的指定字符
|
||||
func (s *String) Trim(cs string) *String {
|
||||
*s = String(strings.Trim(string(*s), cs))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimLeft 去除字符串左端的指定字符
|
||||
func (s *String) TrimLeft(cs string) *String {
|
||||
*s = String(strings.TrimLeft(string(*s), cs))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimRight 去除字符串右端的指定字符
|
||||
func (s *String) TrimRight(cs string) *String {
|
||||
*s = String(strings.TrimRight(string(*s), cs))
|
||||
return s
|
||||
}
|
||||
|
||||
// Default 返回字符串,如果字符串为空则返回默认值
|
||||
func (s *String) Default(def string) *String {
|
||||
if string(*s) == "" {
|
||||
*s = String(def)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// Format 格式化字符串
|
||||
func (s *String) Format(formatter func(s *String) *String) *String {
|
||||
*s = *formatter(s)
|
||||
return s
|
||||
}
|
||||
|
||||
// Index 返回字符串指定位置的字符
|
||||
func (s *String) Index(i int) String {
|
||||
return String(string(*s)[i])
|
||||
}
|
||||
|
||||
// Split 以指定字符分割字符串
|
||||
func (s *String) Split(sep string) *Strings {
|
||||
slice := strings.Split(string(*s), sep)
|
||||
ss := make(Strings, len(slice))
|
||||
for i, v := range slice {
|
||||
ss[i] = New(v)
|
||||
}
|
||||
return &ss
|
||||
}
|
||||
|
||||
// SplitN 以指定字符分割字符串,最多分割 n 次
|
||||
func (s *String) SplitN(sep string, n int) *Strings {
|
||||
slice := strings.SplitN(string(*s), sep, n)
|
||||
ss := make(Strings, len(slice))
|
||||
for i, v := range slice {
|
||||
ss[i] = New(v)
|
||||
}
|
||||
return &ss
|
||||
}
|
||||
|
||||
// ToUpper 将字符串转为大写
|
||||
func (s *String) ToUpper() *String {
|
||||
*s = String(strings.ToUpper(string(*s)))
|
||||
return s
|
||||
}
|
||||
|
||||
// ToLower 将字符串转为小写
|
||||
func (s *String) ToLower() *String {
|
||||
*s = String(strings.ToLower(string(*s)))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimSpace 去除字符串两端的空白字符
|
||||
func (s *String) TrimSpace() *String {
|
||||
*s = String(strings.TrimSpace(string(*s)))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimPrefix 去除字符串前缀
|
||||
func (s *String) TrimPrefix(prefix string) *String {
|
||||
*s = String(strings.TrimPrefix(string(*s), prefix))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimSuffix 去除字符串后缀
|
||||
func (s *String) TrimSuffix(suffix string) *String {
|
||||
*s = String(strings.TrimSuffix(string(*s), suffix))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimSpacePrefix 去除字符串两端的空白字符后再去除前缀
|
||||
func (s *String) TrimSpacePrefix(prefix string) *String {
|
||||
*s = String(strings.TrimPrefix(strings.TrimSpace(string(*s)), prefix))
|
||||
return s
|
||||
}
|
||||
|
||||
// TrimSpaceSuffix 去除字符串两端的空白字符后再去除后缀
|
||||
func (s *String) TrimSpaceSuffix(suffix string) *String {
|
||||
*s = String(strings.TrimSuffix(strings.TrimSpace(string(*s)), suffix))
|
||||
return s
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package str_test
|
||||
|
||||
import (
|
||||
"github.com/kercylan98/minotaur/utils/str"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestString_ToLower(t *testing.T) {
|
||||
var s str.String = "HELLO"
|
||||
s.ToLower()
|
||||
t.Log(s)
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package str
|
||||
|
||||
import "strings"
|
||||
|
||||
type Strings []*String
|
||||
|
||||
// Index 返回字符串指定位置的字符
|
||||
func (s *Strings) Index(i int) *String {
|
||||
return (*s)[i]
|
||||
}
|
||||
|
||||
// Append 追加字符串
|
||||
func (s *Strings) Append(str *String) *Strings {
|
||||
*s = append(*s, str)
|
||||
return s
|
||||
}
|
||||
|
||||
// Join 以指定字符连接字符串
|
||||
func (s *Strings) Join(sep string) *String {
|
||||
var ss []string
|
||||
for _, v := range *s {
|
||||
ss = append(ss, v.String())
|
||||
}
|
||||
*s = append(*s, New(strings.Join(ss, sep)))
|
||||
return (*s)[len(*s)-1]
|
||||
}
|
Loading…
Reference in New Issue