index_code_util.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // @Author gmy 2024/8/7 10:41:00
  2. package utils
  3. import (
  4. "github.com/mozillazg/go-pinyin"
  5. "regexp"
  6. "strings"
  7. )
  8. // GenerateIndexCode 指标编码规则:粮油商务网拼音首字母+指标名称拼音首字母,数字、字母保留,特殊字符拿掉
  9. // 例:美湾:9月U:国际大豆进口成本价:期货收盘:张家港 -----> lyswwmw9yUgjddjkcbjqhspzjg
  10. func GenerateIndexCode(sourceName string, indexName string) string {
  11. indexInitials := getFirstLetter(indexName)
  12. // 拼接后过滤特殊字符,保留数字和字母
  13. indexCode := sourceName + indexInitials
  14. re := regexp.MustCompile(`[^a-zA-Z0-9]`)
  15. indexCode = re.ReplaceAllString(indexCode, "")
  16. // 转换为小写
  17. indexCode = strings.ToLower(indexCode)
  18. return indexCode
  19. }
  20. // 获取字符串中的拼音首字母
  21. func getFirstLetter(s string) string {
  22. a := pinyin.NewArgs()
  23. p := pinyin.Pinyin(s, a)
  24. firstLetters := ""
  25. for _, syllables := range p {
  26. if len(syllables) > 0 {
  27. firstLetters += strings.ToUpper(syllables[0][:1])
  28. }
  29. }
  30. return firstLetters
  31. }