mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 15:34:38 +01:00
99 lines
1.7 KiB
Go
99 lines
1.7 KiB
Go
package stringsupport
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"golang.org/x/text/encoding/japanese"
|
|
"golang.org/x/text/transform"
|
|
)
|
|
|
|
func UTF8ToSJIS(x string) []byte {
|
|
e := japanese.ShiftJIS.NewEncoder()
|
|
xt, _, err := transform.String(e, x)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return []byte(xt)
|
|
}
|
|
|
|
func SJISToUTF8(b []byte) string {
|
|
d := japanese.ShiftJIS.NewDecoder()
|
|
result, err := io.ReadAll(transform.NewReader(bytes.NewReader(b), d))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
func PaddedString(x string, size uint, t bool) []byte {
|
|
if t {
|
|
e := japanese.ShiftJIS.NewEncoder()
|
|
xt, _, err := transform.String(e, x)
|
|
if err != nil {
|
|
return make([]byte, size)
|
|
}
|
|
x = xt
|
|
}
|
|
out := make([]byte, size)
|
|
copy(out, x)
|
|
out[len(out)-1] = 0
|
|
return out
|
|
}
|
|
|
|
func CSVAdd(csv string, v int) string {
|
|
if len(csv) == 0 {
|
|
return strconv.Itoa(v)
|
|
}
|
|
if CSVContains(csv, v) {
|
|
return csv
|
|
} else {
|
|
return csv + "," + strconv.Itoa(v)
|
|
}
|
|
}
|
|
|
|
func CSVRemove(csv string, v int) string {
|
|
s := strings.Split(csv, ",")
|
|
for i, e := range s {
|
|
if e == strconv.Itoa(v) {
|
|
s[i] = s[len(s)-1]
|
|
s = s[:len(s)-1]
|
|
}
|
|
}
|
|
return strings.Join(s, ",")
|
|
}
|
|
|
|
func CSVContains(csv string, v int) bool {
|
|
s := strings.Split(csv, ",")
|
|
for i := 0; i < len(s); i++ {
|
|
j, _ := strconv.ParseInt(s[i], 10, 64)
|
|
if int(j) == v {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func CSVLength(csv string) int {
|
|
if csv == "" {
|
|
return 0
|
|
}
|
|
s := strings.Split(csv, ",")
|
|
return len(s)
|
|
}
|
|
|
|
func CSVElems(csv string) []int {
|
|
var r []int
|
|
if csv == "" {
|
|
return r
|
|
}
|
|
s := strings.Split(csv, ",")
|
|
for i := 0; i < len(s); i++ {
|
|
j, _ := strconv.ParseInt(s[i], 10, 64)
|
|
r = append(r, int(j))
|
|
}
|
|
return r
|
|
}
|