You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
package util |
|
|
|
import ( |
|
"strconv" |
|
"strings" |
|
) |
|
|
|
// StrSliToSQLVarchars convert string slice to varchar in sql syntax |
|
// eg: ["default", "deleted", "modified"] -> " 'default', 'deleted', 'modified' " |
|
// so that we can used it in 'SELECT * ... WHERE xxx IN ('default', 'deleted', 'modified')' |
|
func StrSliToSQLVarchars(s []string) string { |
|
sli := make([]string, len(s)) |
|
for i, ss := range s { |
|
sli[i] = "'" + ss + "'" |
|
} |
|
return strings.Join(sli, ",") |
|
} |
|
|
|
// StrToIntSli convert string to int slice, eg: "1,2,3" -> [1,2,3] |
|
func StrToIntSli(s string, delimiter string) ([]int64, error) { |
|
var result []int64 |
|
sli := strings.Split(s, delimiter) |
|
for _, intStr := range sli { |
|
i, err := strconv.ParseInt(intStr, 10, 64) |
|
if err != nil { |
|
return nil, err |
|
} |
|
result = append(result, i) |
|
} |
|
return result, nil |
|
} |
|
|
|
// IntSliToSQLVarchars convert int slice to string, eg: [1,2,3] -> "1,2,3" |
|
func IntSliToSQLVarchars(ints []int64) string { |
|
return intSliToStr(ints, ",") |
|
} |
|
|
|
func intSliToStr(ints []int64, delimiter string) string { |
|
sli := make([]string, len(ints)) |
|
for i, ii := range ints { |
|
sli[i] = strconv.FormatInt(ii, 10) |
|
} |
|
return strings.Join(sli, delimiter) |
|
} |
|
|
|
// SameChar check if string consists of same characters |
|
func SameChar(content string) bool { |
|
content = strings.ToLower(content) |
|
first := content[0] |
|
for _, s := range content { |
|
if s != rune(first) { |
|
return false |
|
} |
|
} |
|
return true |
|
} |
|
|
|
// StripPrefix remove prefix from string if exists |
|
func StripPrefix(s string, prefix string, suffix string) string { |
|
if strings.HasPrefix(s, prefix) { |
|
i := strings.Index(s, suffix) |
|
return s[i+1:] |
|
} |
|
return s |
|
}
|
|
|