Skip to main content
Glama
strings.go3.23 kB
package utils import ( "bytes" "regexp" "strconv" "strings" "unicode/utf8" ) // MaskString 用于将字符串的前n个字符显示出来,后面的部分用 * 替代 func MaskString(input string, visibleLength int) string { if visibleLength <= 0 { // 如果指定的可见长度小于等于0,全部用 * 替代 return strings.Repeat("*", len(input)) } if len(input) <= visibleLength { // 如果字符串长度小于等于可见长度,全部用 * 替代 return strings.Repeat("*", len(input)) } // 前 n 个字符 + 剩余字符用 * 替代 return input[:visibleLength] + strings.Repeat("*", len(input)-visibleLength) } 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 ToInt32(s string) int32 { id, err := strconv.Atoi(s) if err != nil { return 0 } return int32(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 } 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, "_") //去除空格 sanitizedFilename = strings.ReplaceAll(sanitizedFilename, " ", "_") return sanitizedFilename } // 清理 ANSI 转义序列的正则表达式 var ansiEscapeRegex = regexp.MustCompile(`\x1B\[[0-9;]*[A-Za-z]`) func CleanANSISequences(input string) string { return ansiEscapeRegex.ReplaceAllString(input, "") }

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/k8m'

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