diff --git a/lib.go b/lib.go index 424d3f9..31b64a5 100644 --- a/lib.go +++ b/lib.go @@ -21,7 +21,6 @@ import ( "regexp" "strconv" "strings" - "unicode" ) // ReadZipReader can be used to read the spreadsheet in memory without touching the @@ -588,10 +587,6 @@ func bstrUnmarshal(s string) (result string) { subStr := s[match[0]:match[1]] if subStr == "_x005F_" { cursor = match[1] - if l > match[1]+6 && !bstrEscapeExp.MatchString(s[match[1]:match[1]+6]) { - result += subStr - continue - } result += "_" continue } @@ -607,15 +602,7 @@ func bstrUnmarshal(s string) (result string) { result += subStr continue } - hasRune := false - for _, c := range v { - if unicode.IsControl(c) { - hasRune = true - } - } - if !hasRune { - result += v - } + result += v } } if cursor < l { diff --git a/lib_test.go b/lib_test.go index 025bc85..556ed91 100644 --- a/lib_test.go +++ b/lib_test.go @@ -263,21 +263,21 @@ func TestGenXMLNamespace(t *testing.T) { func TestBstrUnmarshal(t *testing.T) { bstrs := map[string]string{ "*": "*", - "*_x0000_": "*", - "*_x0008_": "*", - "_x0008_*": "*", - "*_x0008_*": "**", + "*_x0000_": "*\x00", + "*_x0008_": "*\b", + "_x0008_*": "\b*", + "*_x0008_*": "*\b*", "*_x4F60__x597D_": "*你好", "*_xG000_": "*_xG000_", "*_xG05F_x0001_*": "*_xG05F*", - "*_x005F__x0008_*": "*_x005F_*", + "*_x005F__x0008_*": "*_\b*", "*_x005F_x0001_*": "*_x0001_*", - "*_x005f_x005F__x0008_*": "*_x005F_*", + "*_x005f_x005F__x0008_*": "*_x005F_\b*", "*_x005F_x005F_xG05F_x0006_*": "*_x005F_xG05F*", "*_x005F_x005F_x005F_x0006_*": "*_x005F_x0006_*", - "_x005F__x0008_******": "_x005F_******", - "******_x005F__x0008_": "******_x005F_", - "******_x005F__x0008_******": "******_x005F_******", + "_x005F__x0008_******": "_\b******", + "******_x005F__x0008_": "******_\b", + "******_x005F__x0008_******": "******_\b******", } for bstr, expected := range bstrs { assert.Equal(t, expected, bstrUnmarshal(bstr))