diff --git a/conversions/strings.go b/conversions/strings.go new file mode 100644 index 000000000..a26a5574e --- /dev/null +++ b/conversions/strings.go @@ -0,0 +1,14 @@ +package conversions + +import "strings" + +// StringToSliceString splits a string into a slice string according to separator +func StringToSliceString(src string, sep string) []string { + var parts []string + parsed := strings.Split(src, sep) + for _, v := range parsed { + parts = append(parts, strings.TrimSpace(v)) + } + + return parts +} diff --git a/conversions/strings_test.go b/conversions/strings_test.go new file mode 100644 index 000000000..69ade88b7 --- /dev/null +++ b/conversions/strings_test.go @@ -0,0 +1,35 @@ +package conversions + +import "testing" + +var scenarios = []struct { + name string + input string + separator string + out []string +}{ + { + "comma separated input", + "a, b, c, d", + ",", + []string{"a", "b", "c", "d"}, + }, { + "space separated input", + "a b c d", + " ", + []string{"a", "b", "c", "d"}, + }, +} + +func TestStringToSliceString(t *testing.T) { + for _, tt := range scenarios { + t.Run(tt.name, func(t *testing.T) { + s := StringToSliceString(tt.input, tt.separator) + for i, v := range tt.out { + if tt.out[i] != v { + t.Errorf("got %q, want %q", s, tt.out) + } + } + }) + } +}