From c0236d7dfaaf204d2ad2931989df9bf18e4fc6a0 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 22 Oct 2019 13:57:21 +0800 Subject: [PATCH] improve gstr.SplitAndTrim --- text/gstr/gstr.go | 12 ++++++------ text/gstr/gstr_z_unit_basic_test.go | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/text/gstr/gstr.go b/text/gstr/gstr.go index 3f9363f81..643ffc05d 100644 --- a/text/gstr/gstr.go +++ b/text/gstr/gstr.go @@ -446,11 +446,11 @@ func Split(str, delimiter string) []string { // and calls Trim to every element of this array. It ignores the elements // which are empty after Trim. func SplitAndTrim(str, delimiter string, characterMask ...string) []string { - array := strings.Split(str, delimiter) - for k, v := range array { + array := make([]string, 0) + for _, v := range strings.Split(str, delimiter) { v = Trim(v, characterMask...) if v != "" { - array[k] = v + array = append(array, v) } } return array @@ -460,11 +460,11 @@ func SplitAndTrim(str, delimiter string, characterMask ...string) []string { // and calls TrimSpace to every element of this array. // Deprecated. func SplitAndTrimSpace(str, delimiter string) []string { - array := strings.Split(str, delimiter) - for k, v := range array { + array := make([]string, 0) + for _, v := range strings.Split(str, delimiter) { v = strings.TrimSpace(v) if v != "" { - array[k] = v + array = append(array, v) } } return array diff --git a/text/gstr/gstr_z_unit_basic_test.go b/text/gstr/gstr_z_unit_basic_test.go index d2be8258f..b4b2a897b 100644 --- a/text/gstr/gstr_z_unit_basic_test.go +++ b/text/gstr/gstr_z_unit_basic_test.go @@ -176,6 +176,22 @@ func Test_ChunkSplit(t *testing.T) { }) } +func Test_SplitAndTrim(t *testing.T) { + gtest.Case(t, func() { + s := ` + +010 + +020 + +` + a := gstr.SplitAndTrim(s, "\n", "0") + gtest.Assert(len(a), 2) + gtest.Assert(a[0], "1") + gtest.Assert(a[1], "2") + }) +} + func Test_Fields(t *testing.T) { gtest.Case(t, func() { gtest.Assert(gstr.Fields("我爱 Go Frame"), []string{