sorthan.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package util
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "golang.org/x/text/encoding/simplifiedchinese"
  6. "golang.org/x/text/transform"
  7. )
  8. type Arr []string
  9. func (a Arr) Len() int { return len(a) }
  10. func (a Arr) Less(i, j int) bool {
  11. tmp1, _ := UTF82GBK(a[i])
  12. tmp2, _ := UTF82GBK(a[j])
  13. tmp2Len := len(tmp2)
  14. for idx, chr := range tmp1 {
  15. if idx > tmp2Len-1 {
  16. return false
  17. }
  18. if chr != tmp2[idx] {
  19. return chr < tmp2[idx]
  20. }
  21. }
  22. return true
  23. }
  24. func (a Arr) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
  25. func UTF82GBK(src string) ([]byte, error) {
  26. GB18030 := simplifiedchinese.All[0]
  27. return ioutil.ReadAll(transform.NewReader(bytes.NewReader([]byte(src)), GB18030.NewEncoder()))
  28. }
  29. // func main() {
  30. // tmp := Arr{"项目名称", "winner", "省份", "项目编号", "城市", "公告二级", "区县", "项目规模 ", "项目范围", "预算", "中标金额", "采购单位", "采购联系人 ", "中标电话 ", "中标地址 ", "竣工日期 ", "工期时长 ", "工期单位 ", "项目周期(服务周期) ", "评审专家 ", "招标文件购买金额 ", "投标保证金-是否支持保函", "ppp项目", "是否支持保函", "标的物", "多包", "中标候选人"}
  31. // sort.Sort(tmp)
  32. // fmt.Println(tmp)
  33. // }