Files
resume/pkg/utils/string_utils.go
T

59 lines
1.2 KiB
Go

package utils
import (
"fmt"
"strings"
"unicode"
)
func ConvertToString(v interface{}) string {
if v == nil {
return ""
}
switch val := v.(type) {
case string:
return val
case int, int8, int16, int32, int64:
return fmt.Sprintf("%d", val)
case float32, float64:
return fmt.Sprintf("%.0f", val)
default:
return fmt.Sprintf("%v", val)
}
}
func ConvertToStringSlice(v []interface{}) []interface{} {
if v == nil {
return []interface{}{}
}
result := make([]interface{}, 0, len(v))
for _, item := range v {
result = append(result, ConvertToString(item))
}
return result
}
func CleanText(text string) string {
var builder strings.Builder
for _, r := range text {
if unicode.IsPrint(r) || r == '\n' || r == '\r' || r == '\t' {
builder.WriteRune(r)
} else {
builder.WriteRune(' ')
}
}
result := builder.String()
result = strings.ReplaceAll(result, "\r\n", "\n")
result = strings.ReplaceAll(result, "\r", "\n")
for strings.Contains(result, "\n\n\n") {
result = strings.ReplaceAll(result, "\n\n\n", "\n\n")
}
for strings.Contains(result, " ") {
result = strings.ReplaceAll(result, " ", " ")
}
return strings.TrimSpace(result)
}