pcm-coordinator/pkg/utils/string.go

69 lines
1.6 KiB
Go

/*
Copyright (c) [2023] [pcm]
[pcm-coordinator] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
package utils
import (
"math/rand"
"regexp"
"strings"
"time"
)
const (
CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
TIMEFORMAT = "20060102150405"
)
func RandomString(n int) string {
sb := strings.Builder{}
sb.Grow(n)
for i := 0; i < n; i++ {
sb.WriteByte(CHARSET[rand.Intn(len(CHARSET))])
}
return sb.String()
}
func TimeString() string {
return time.Now().Format(TIMEFORMAT)
}
func IsValidHostAddress(input string) bool {
//pattern := `^(([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5}$`
pattern := `^((([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5})$|^.*\.com$`
re, err := regexp.Compile(pattern)
if err != nil {
return false
}
return re.MatchString(input)
}
func MpaStringToInterface(m map[string]string) map[string]interface{} {
result := make(map[string]interface{})
for k, v := range m {
result[k] = v
}
return result
}
func MapInterfaceToString(m map[string]interface{}) map[string]string {
result := make(map[string]string)
for k, v := range m {
if str, ok := v.(string); ok {
result[k] = str
}
}
return result
}