goProject/trunk/goutil/stringUtil/toString.go

159 lines
3.4 KiB
Go
Raw Normal View History

2025-01-06 16:01:02 +08:00
package stringUtil
import (
"bytes"
"fmt"
"reflect"
)
// map转换为字符串(如果类型不匹配)
// data:map数据
// separator1:间隔符1
// separator1:间隔符2
// 返回值:
// result:转换后的字符串
// err:错误信息
func MapToString(data interface{}, separator1, separator2 string) (result string, err error) {
if data == nil {
return
}
val := reflect.ValueOf(data)
if val.Kind() != reflect.Map {
err = fmt.Errorf("只能转换Map类型的当前类型是:%v", val.Kind().String())
return
}
if val.Len() <= 0 {
return
}
for _, keyItem := range val.MapKeys() {
valItem := val.MapIndex(keyItem)
result = result + fmt.Sprintf("%v%s%v%s", keyItem.Interface(), separator1, valItem.Interface(), separator2)
}
result = result[:len(result)-1]
return
}
// map转换为字符串(如果类型不匹配)
// data:map数据
// separator1:间隔符1
// separator1:间隔符2
// valGetFunc:结果值获取函数
// 返回值:
// result:转换后的字符串
// err:错误信息
func MapToString2(data interface{}, separator1, separator2 string, valGetFunc func(val interface{}) interface{}) (result string, err error) {
if data == nil {
return
}
val := reflect.ValueOf(data)
if val.Kind() != reflect.Map {
err = fmt.Errorf("只能转换Map类型的当前类型是:%v", val.Kind().String())
return
}
if val.Len() <= 0 {
return
}
for _, keyItem := range val.MapKeys() {
valItem := val.MapIndex(keyItem)
result = result + fmt.Sprintf("%v%s%v%s", keyItem.Interface(), separator1, valGetFunc(valItem.Interface()), separator2)
}
result = result[:len(result)-1]
return
}
// 把一个集合转换成字符串
// data:slice类型的集合
// separator:分隔符
// 返回值:
// result:转换后的字符串
// err:错误信息对象
func SliceToString(data interface{}, separator string) (result string, err error) {
if data == nil {
return
}
value := reflect.ValueOf(data)
if value.Kind() != reflect.Slice && value.Kind() != reflect.Array {
err = fmt.Errorf("目标类型不正确只能是slice或array 当前类型是:%v", value.Kind().String())
return
}
if value.Len() <= 0 {
return
}
for i := 0; i < value.Len(); i++ {
valItem := value.Index(i)
result = result + fmt.Sprintf("%s%v", separator, valItem.Interface())
}
result = result[1:]
return
}
func StringListToString(list []string, delimiter string) string {
var buffer bytes.Buffer
for i, v := range list {
if i != len(list)-1 {
buffer.WriteString(v)
buffer.WriteString(delimiter)
} else {
buffer.WriteString(v)
}
}
return buffer.String()
}
func IntListToString(list []int, delimiter string) string {
var buffer bytes.Buffer
for i, v := range list {
if i != len(list)-1 {
buffer.WriteString(fmt.Sprintf("%d", v))
buffer.WriteString(delimiter)
} else {
buffer.WriteString(fmt.Sprintf("%d", v))
}
}
return buffer.String()
}
func Int32ListToString(list []int32, delimiter string) string {
var buffer bytes.Buffer
for i, v := range list {
if i != len(list)-1 {
buffer.WriteString(fmt.Sprintf("%d", v))
buffer.WriteString(delimiter)
} else {
buffer.WriteString(fmt.Sprintf("%d", v))
}
}
return buffer.String()
}
func Int64ListToString(list []int64, delimiter string) string {
var buffer bytes.Buffer
for i, v := range list {
if i != len(list)-1 {
buffer.WriteString(fmt.Sprintf("%d", v))
buffer.WriteString(delimiter)
} else {
buffer.WriteString(fmt.Sprintf("%d", v))
}
}
return buffer.String()
}