69 lines
1014 B
Go
69 lines
1014 B
Go
package golanghelper
|
|
|
|
import "strings"
|
|
|
|
const (
|
|
EMPTY = ""
|
|
SPACE = " "
|
|
)
|
|
|
|
type StringUtils struct {
|
|
}
|
|
|
|
// IsEmpty 會檢查 str 是否為空值
|
|
func (s *StringUtils) IsEmpty(str string) bool {
|
|
return len(str) == 0
|
|
}
|
|
|
|
// LeftPad 將 padStr 以 size 做為長度,向左填滿 str
|
|
func (s *StringUtils) LeftPad(str string, size int, padStr string) string {
|
|
if s.IsEmpty(padStr) {
|
|
padStr = SPACE
|
|
}
|
|
|
|
padStrLen := len(padStr)
|
|
padCount := size - len(str)
|
|
|
|
if padCount <= 0 || padCount < padStrLen {
|
|
return str
|
|
}
|
|
if padCount == padStrLen {
|
|
return padStr + str
|
|
}
|
|
|
|
return strings.Repeat(padStr, padCount) + str
|
|
}
|
|
|
|
func (s *StringUtils) Substring(str string, start, end int) string {
|
|
if str == "" {
|
|
return str
|
|
}
|
|
|
|
runes := []rune(str)
|
|
|
|
if end < 0 {
|
|
end = len(runes) + end
|
|
}
|
|
if start < 0 {
|
|
start = len(runes) + start
|
|
}
|
|
|
|
if end > len(str) {
|
|
end = len(str)
|
|
}
|
|
|
|
if start > end {
|
|
return EMPTY
|
|
}
|
|
|
|
if start < 0 {
|
|
start = 0
|
|
}
|
|
|
|
if end < 0 {
|
|
end = 0
|
|
}
|
|
|
|
return string(runes[start:end])
|
|
}
|