123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package mhayaString
- import (
- "encoding/json"
- "math/rand"
- "regexp"
- "strconv"
- goStrings "strings"
- )
- // CutLastString 截取字符串中最后一段,以@beginChar开始,@endChar结束的字符
- // @text 文本
- // @beginChar 开始
- func CutLastString(text, beginChar, endChar string) string {
- if text == "" || beginChar == "" || endChar == "" {
- return ""
- }
- textRune := []rune(text)
- beginIndex := goStrings.LastIndex(text, beginChar)
- endIndex := goStrings.LastIndex(text, endChar)
- if endIndex < 0 || endIndex < beginIndex {
- endIndex = len(textRune)
- }
- return string(textRune[beginIndex+1 : endIndex])
- }
- func IsBlank(value string) bool {
- return value == ""
- }
- func IsNotBlank(value string) bool {
- return value != ""
- }
- func ToUint(value string, def ...uint) (uint, bool) {
- val, err := strconv.ParseUint(value, 10, 32)
- if err != nil {
- if len(def) > 0 {
- return def[0], false
- }
- return 0, false
- }
- return uint(val), true
- }
- func ToUintD(value string, def ...uint) uint {
- val, _ := ToUint(value, def...)
- return val
- }
- func ToInt(value string, def ...int) (int, bool) {
- val, err := strconv.Atoi(value)
- if err != nil {
- if len(def) > 0 {
- return def[0], false
- }
- return 0, false
- }
- return val, true
- }
- func ToIntD(value string, def ...int) int {
- val, _ := ToInt(value, def...)
- return val
- }
- func ToInt32(value string, def ...int32) (int32, bool) {
- val, err := strconv.ParseInt(value, 10, 32)
- if err != nil {
- if len(def) > 0 {
- return def[0], false
- }
- return 0, false
- }
- return int32(val), true
- }
- func ToInt32D(value string, def ...int32) int32 {
- val, _ := ToInt32(value, def...)
- return val
- }
- func ToInt64(value string, def ...int64) (int64, bool) {
- val, err := strconv.ParseInt(value, 10, 64)
- if err != nil {
- if len(def) > 0 {
- return def[0], false
- }
- return 0, false
- }
- return val, true
- }
- func ToInt64D(value string, def ...int64) int64 {
- val, _ := ToInt64(value, def...)
- return val
- }
- func ToString(value interface{}) string {
- ret := ""
- if value == nil {
- return ret
- }
- switch t := value.(type) {
- case string:
- ret = t
- case int:
- ret = strconv.Itoa(t)
- case int32:
- ret = strconv.Itoa(int(t))
- case int64:
- ret = strconv.FormatInt(t, 10)
- case uint:
- ret = strconv.Itoa(int(t))
- case uint32:
- ret = strconv.Itoa(int(t))
- case uint64:
- ret = strconv.Itoa(int(t))
- default:
- v, _ := json.Marshal(t)
- ret = string(v)
- }
- return ret
- }
- func ToStringSlice(val []interface{}) []string {
- var result []string
- for _, item := range val {
- v, ok := item.(string)
- if ok {
- result = append(result, v)
- }
- }
- return result
- }
- func SplitIndex(s, sep string, index int) (string, bool) {
- ret := goStrings.Split(s, sep)
- if index >= len(ret) {
- return "", false
- }
- return ret[index], true
- }
- func GetRandString(num int) string {
- const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- b := make([]byte, num)
- for i := range b {
- b[i] = letterBytes[rand.Intn(len(letterBytes))]
- }
- return string(b)
- }
- // ConvertToBase58 将给定的整数转换为58进制的字符串表示。
- func ConvertToBase58(num int64) string {
- if num == 0 {
- return "1" // 0在58进制中表示为"1"
- }
- var result goStrings.Builder
- digits := "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" // 58进制的基数字符
- for num > 0 {
- remainder := num % 58
- result.WriteByte(digits[remainder])
- num /= 58
- }
- // 因为我们是从低位到高位构建的字符串,所以最终需要反转
- return reverseString(result.String())
- }
- // reverseString 反转字符串
- func reverseString(s string) string {
- runes := []rune(s)
- for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
- runes[i], runes[j] = runes[j], runes[i]
- }
- return string(runes)
- }
- const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
- func RandStringBytes(n int) string {
- b := make([]byte, n)
- for i := range b {
- b[i] = letterBytes[rand.Intn(len(letterBytes))]
- }
- return string(b)
- }
- // ReplaceDigitsWithBase58 在字符串中替换所有的数字为58进制表示
- func ReplaceDigitsWithBase58(input string) string {
- re := regexp.MustCompile(`\d+`) // 匹配一个或多个数字
- return re.ReplaceAllStringFunc(input, func(match string) string {
- num, _ := strconv.ParseInt(match, 10, 64)
- return ConvertToBase58(num)
- })
- }
|