diff --git a/pkg/utils/string.go b/pkg/utils/string.go index daa40b8..2924c28 100644 --- a/pkg/utils/string.go +++ b/pkg/utils/string.go @@ -1,6 +1,9 @@ package utils -import "strings" +import ( + "regexp" + "strings" +) // CleanString 移除所有空白字符 func CleanString(s string) string { @@ -18,3 +21,23 @@ func TruncateString(s string, maxLen int) string { } return string(runes[:maxLen]) } + +// ExtractTags 从文本中提取标签,标签以 # 开头,后面不能直接跟空格 +func ExtractTags(s string) []string { + if len(s) == 0 { + return []string{} + } + re := regexp.MustCompile(`#[^\s#\p{P}]+`) + matches := re.FindAllString(s, -1) + + tags := make([]string, 0, len(matches)) + for _, match := range matches { + // 去掉开头的 #,只保留标签内容 + tag := match[1:] + if len(tag) > 0 { + tags = append(tags, tag) + } + } + + return tags +}