44 lines
656 B
Go
44 lines
656 B
Go
package strings
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"fmt"
|
|
"golang.org/x/exp/constraints"
|
|
"io"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func Join(s ...string) (str string) {
|
|
if len(s) == 1 {
|
|
return s[0]
|
|
} else if len(s) > 1 {
|
|
b := strings.Builder{}
|
|
for _, s2 := range s {
|
|
b.WriteString(s2)
|
|
}
|
|
str = b.String()
|
|
}
|
|
return
|
|
}
|
|
|
|
func ToInteger[T constraints.Integer](s string, defaults T) T {
|
|
if s == "" {
|
|
return defaults
|
|
}
|
|
i, err := strconv.ParseInt(s, 10, 64)
|
|
if err != nil {
|
|
return defaults
|
|
}
|
|
return T(i)
|
|
}
|
|
|
|
func Md5(str string) string {
|
|
h := md5.New()
|
|
_, err := io.WriteString(h, str)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return fmt.Sprintf("%x", h.Sum(nil))
|
|
}
|