numtochinese.go 720 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package common
  2. import (
  3. "strings"
  4. )
  5. var digitMap = map[int]string{
  6. 0: "零", 1: "一", 2: "二", 3: "三", 4: "四",
  7. 5: "五", 6: "六", 7: "七", 8: "八", 9: "九",
  8. }
  9. func NumToChinese(num int) string {
  10. if num < 1 || num > 100 {
  11. return ""
  12. }
  13. if num == 100 {
  14. return "一百"
  15. }
  16. var sb strings.Builder
  17. tens := num / 10
  18. units := num % 10
  19. // 十几的特殊情况
  20. if tens == 1 {
  21. if units == 0 {
  22. return "十"
  23. }
  24. sb.WriteString("十")
  25. if units > 0 {
  26. sb.WriteString(digitMap[units])
  27. }
  28. return sb.String()
  29. }
  30. // 二十、三十一 等
  31. if tens > 1 {
  32. sb.WriteString(digitMap[tens])
  33. sb.WriteString("十")
  34. }
  35. if units > 0 {
  36. sb.WriteString(digitMap[units])
  37. }
  38. return sb.String()
  39. }