string.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package mhayaString
  2. import (
  3. "encoding/json"
  4. "strconv"
  5. goStrings "strings"
  6. )
  7. // CutLastString 截取字符串中最后一段,以@beginChar开始,@endChar结束的字符
  8. // @text 文本
  9. // @beginChar 开始
  10. func CutLastString(text, beginChar, endChar string) string {
  11. if text == "" || beginChar == "" || endChar == "" {
  12. return ""
  13. }
  14. textRune := []rune(text)
  15. beginIndex := goStrings.LastIndex(text, beginChar)
  16. endIndex := goStrings.LastIndex(text, endChar)
  17. if endIndex < 0 || endIndex < beginIndex {
  18. endIndex = len(textRune)
  19. }
  20. return string(textRune[beginIndex+1 : endIndex])
  21. }
  22. func IsBlank(value string) bool {
  23. return value == ""
  24. }
  25. func IsNotBlank(value string) bool {
  26. return value != ""
  27. }
  28. func ToUint(value string, def ...uint) (uint, bool) {
  29. val, err := strconv.ParseUint(value, 10, 32)
  30. if err != nil {
  31. if len(def) > 0 {
  32. return def[0], false
  33. }
  34. return 0, false
  35. }
  36. return uint(val), true
  37. }
  38. func ToUintD(value string, def ...uint) uint {
  39. val, _ := ToUint(value, def...)
  40. return val
  41. }
  42. func ToInt(value string, def ...int) (int, bool) {
  43. val, err := strconv.Atoi(value)
  44. if err != nil {
  45. if len(def) > 0 {
  46. return def[0], false
  47. }
  48. return 0, false
  49. }
  50. return val, true
  51. }
  52. func ToIntD(value string, def ...int) int {
  53. val, _ := ToInt(value, def...)
  54. return val
  55. }
  56. func ToInt32(value string, def ...int32) (int32, bool) {
  57. val, err := strconv.ParseInt(value, 10, 32)
  58. if err != nil {
  59. if len(def) > 0 {
  60. return def[0], false
  61. }
  62. return 0, false
  63. }
  64. return int32(val), true
  65. }
  66. func ToInt32D(value string, def ...int32) int32 {
  67. val, _ := ToInt32(value, def...)
  68. return val
  69. }
  70. func ToInt64(value string, def ...int64) (int64, bool) {
  71. val, err := strconv.ParseInt(value, 10, 64)
  72. if err != nil {
  73. if len(def) > 0 {
  74. return def[0], false
  75. }
  76. return 0, false
  77. }
  78. return val, true
  79. }
  80. func ToInt64D(value string, def ...int64) int64 {
  81. val, _ := ToInt64(value, def...)
  82. return val
  83. }
  84. func ToString(value interface{}) string {
  85. ret := ""
  86. if value == nil {
  87. return ret
  88. }
  89. switch t := value.(type) {
  90. case string:
  91. ret = t
  92. case int:
  93. ret = strconv.Itoa(t)
  94. case int32:
  95. ret = strconv.Itoa(int(t))
  96. case int64:
  97. ret = strconv.FormatInt(t, 10)
  98. case uint:
  99. ret = strconv.Itoa(int(t))
  100. case uint32:
  101. ret = strconv.Itoa(int(t))
  102. case uint64:
  103. ret = strconv.Itoa(int(t))
  104. default:
  105. v, _ := json.Marshal(t)
  106. ret = string(v)
  107. }
  108. return ret
  109. }
  110. func ToStringSlice(val []interface{}) []string {
  111. var result []string
  112. for _, item := range val {
  113. v, ok := item.(string)
  114. if ok {
  115. result = append(result, v)
  116. }
  117. }
  118. return result
  119. }
  120. func SplitIndex(s, sep string, index int) (string, bool) {
  121. ret := goStrings.Split(s, sep)
  122. if index >= len(ret) {
  123. return "", false
  124. }
  125. return ret[index], true
  126. }