github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgExcel/Trim2DArray.go (about) 1 package kmgExcel 2 3 import ( 4 "strings" 5 ) 6 7 //remove empty cell right(every line will have same length) 8 //remove all empty line (include some empty line in between) 9 func Trim2DArray(input [][]string) (output [][]string) { 10 if len(input) == 0 { 11 return [][]string{} 12 } 13 //find max line cell number 14 MaxLineCellNumber := len(TrimRightRowString(input[0])) 15 LineNumber := 0 16 for _, row := range input { 17 thisLineCellNumber := len(TrimRightRowString(row)) 18 if thisLineCellNumber != 0 { 19 LineNumber++ 20 } 21 if MaxLineCellNumber < thisLineCellNumber { 22 MaxLineCellNumber = thisLineCellNumber 23 } 24 } 25 output = make([][]string, LineNumber) 26 i := 0 27 for _, row := range input { 28 thisLineCellNumber := len(TrimRightRowString(row)) 29 if thisLineCellNumber == 0 { 30 continue 31 } 32 if MaxLineCellNumber <= len(row) { 33 output[i] = row[:MaxLineCellNumber] 34 } else { 35 retRow := make([]string, 0, MaxLineCellNumber) 36 retRow = append(retRow, row...) 37 remainCellNumber := MaxLineCellNumber - len(row) 38 for i := 0; i < remainCellNumber; i++ { 39 retRow = append(retRow, "") 40 } 41 output[i] = retRow 42 } 43 44 i++ 45 } 46 return output 47 } 48 49 func TrimRightRowString(row []string) []string { 50 for i := len(row) - 1; i >= 0; i-- { 51 if strings.TrimSpace(row[i]) != "" { 52 return row[:i+1] 53 } 54 } 55 return []string{} 56 }