go-thousands/thousands.go
2025-06-10 15:45:39 +02:00

111 Zeilen
2,4 KiB
Go

package thousands
import (
"fmt"
language2 "golang.org/x/text/language"
"golang.org/x/text/message"
)
func Separate(Number interface{}, language ...string) (string, error) {
lang := map[string]string{"de": "German", "en": "English"}
useLang := lang[language[0]]
p := message.NewPrinter(language2.Make(useLang))
formattedNumber := ""
switch n := Number.(type) {
case int:
case int8:
case int16:
case int32:
case int64:
case float32:
case float64:
default:
return "", fmt.Errorf("%T is no valid number format", n)
}
formattedNumber = p.Sprintf("%f", Number)
/**
formattedNumber := fmt.Sprintf("%.2f", Number)
if len(language) < 1 {
language[0] = "en"
}
switch language[0] {
case "de":
formattedNumber = strings.ReplaceAll(formattedNumber, ",", ".")
dec := ""
if strings.Index(formattedNumber, ".") != -1 {
dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)]
formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")]
}
for i := 0; i <= len(formattedNumber); i = i + 4 {
a := formattedNumber[0 : len(formattedNumber)-i]
b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)]
formattedNumber = a + "." + b
}
if formattedNumber[0:1] == "." {
formattedNumber = formattedNumber[1:len(formattedNumber)]
}
if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "." {
formattedNumber = formattedNumber[0 : len(formattedNumber)-1]
}
if dec != "" {
formattedNumber = formattedNumber + "," + dec
}
return formattedNumber, nil
case "en":
formattedNumber = strings.ReplaceAll(formattedNumber, ",", "")
dec := ""
if strings.Index(formattedNumber, ".") != -1 {
dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)]
formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")]
}
for i := 0; i <= len(formattedNumber); i = i + 4 {
a := formattedNumber[0 : len(formattedNumber)-i]
b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)]
formattedNumber = a + "," + b
}
if formattedNumber[0:1] == "," {
formattedNumber = formattedNumber[1:len(formattedNumber)]
}
if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "," {
formattedNumber = formattedNumber[0 : len(formattedNumber)-1]
}
if dec != "" {
formattedNumber = formattedNumber + "." + dec
}
return formattedNumber, nil
}
*/
return formattedNumber, nil
}