Skip to main content
Glama
strings.go3.88 kB
package utils import ( "bytes" "fmt" "math" "regexp" "strconv" "strings" "time" "unicode/utf8" ) func TruncateString(s string, length int) string { if utf8.RuneCountInString(s) <= length { return s } // Convert the string to a slice of runes runes := []rune(s) return string(runes[:length]) } func ToInt(s string) int { id, err := strconv.Atoi(s) if err != nil { return 0 } return id } func ToIntDefault(s string, i int) int { id, err := strconv.Atoi(s) if err != nil { return i } return id } func ToUInt(s string) uint { id, err := strconv.ParseUint(s, 10, 64) if err != nil { return 0 } if id > math.MaxUint { return 0 } return uint(id) } // ToIntSlice 将逗号分隔的数字字符串转换为 []int 切片 func ToIntSlice(ids string) []int { // 分割字符串 strIds := strings.Split(ids, ",") var intIds []int // 遍历字符串数组并转换为整数 for _, strId := range strIds { strId = strings.TrimSpace(strId) // 移除前后空格 if id, err := strconv.Atoi(strId); err == nil { intIds = append(intIds, id) } } return intIds } func ToInt64Slice(ids string) []int64 { // 分割字符串 strIds := strings.Split(ids, ",") var intIds []int64 // 遍历字符串数组并转换为整数 for _, strId := range strIds { strId = strings.TrimSpace(strId) // 移除前后空格 if id, err := strconv.ParseInt(strId, 10, 64); err == nil { intIds = append(intIds, id) } } return intIds } func ToInt64(str string) int64 { id, err := strconv.ParseInt(str, 10, 64) if err != nil { return 0 } return id } func IsTextFile(ob []byte) (bool, error) { n := len(ob) if n > 1024 { n = 1024 } // 检查是否包含非文本字符 if !utf8.Valid(ob[:n]) { return false, nil } // 检查是否包含空字节(\x00),空字节通常代表二进制文件 if bytes.Contains(ob[:n], []byte{0}) { return false, nil } return true, nil } // SanitizeFileName 去除文件名中的非法字符,并替换为下划线 '_' func SanitizeFileName(filename string) string { // 定义非法字符的正则表达式,包括 \ / : * ? " < > | 以及小括号 () reg := regexp.MustCompile(`[\\/:*?"<>|()]+`) // 替换非法字符为下划线 '_' sanitizedFilename := reg.ReplaceAllString(filename, "_") return sanitizedFilename } func NormalizeNewlines(input string) string { // 将 Windows 风格的换行符 \r\n 替换为 Unix 风格 \n return strings.ReplaceAll(input, "\r\n", "\n") } func NormalizeToWindows(input string) string { // 先统一为 \n 再替换为 \r\n,防止重复替换出错 unixNormalized := strings.ReplaceAll(input, "\r\n", "\n") return strings.ReplaceAll(unixNormalized, "\n", "\r\n") } func TrimQuotes(str string) string { str = strings.TrimPrefix(str, "`") str = strings.TrimSuffix(str, "`") str = strings.TrimPrefix(str, "'") str = strings.TrimSuffix(str, "'") return str } func ParseTime(value string) (time.Time, error) { // 尝试不同的时间格式 layouts := []string{ time.RFC3339, // "2006-01-02T15:04:05Z07:00" "2006-01-02", // "2006-01-02" (日期) "2006-01-02 15:04:05", // "2006-01-02 15:04:05" (无时区) "2006-01-02 15:04:05 -0700 MST", // "2006-01-02 15:04:05 -0700 MST" (带时区) 2024-12-05 14:11:44 +0000 UTC } var t time.Time var err error for _, layout := range layouts { t, err = time.Parse(layout, value) if err == nil { return t, nil } } return t, err } // StringListToSQLIn 将字符串列表转换为 SQL IN 子句中使用的格式,例如 ('x', 'xx') // 例如 ['x', 'xx'] 转换为 ('x', 'xx') func StringListToSQLIn(strList []string) string { if len(strList) == 0 { return "()" } var parts []string for _, str := range strList { parts = append(parts, fmt.Sprintf("'%s'", str)) } return "(" + strings.Join(parts, ", ") + ")" }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/kom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server