goProject/trunk/goutil/stringUtil/toString.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

159 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
}