[Golang] Remove Leading and Trailing Empty Strings in String Array
Remove leading and trailing empty strings in string array/slice via Golang. This is similar to removing leading and trailing whitespaces in a string, but in two dimension.
// Remove leading and trailing empty strings in string array
package main
import (
"fmt"
)
func RemoveLeadingEmptyStringsInStringArray(sa []string) []string {
firstNonEmptyStringIndex := 0
for i := 0; i < len(sa); i++ {
if sa[i] == "" {
firstNonEmptyStringIndex++
} else {
break
}
}
return sa[firstNonEmptyStringIndex:len(sa)]
}
func RemoveTrailingEmptyStringsInStringArray(sa []string) []string {
lastNonEmptyStringIndex := len(sa) - 1
for i := lastNonEmptyStringIndex; i >= 0; i-- {
if sa[i] == "" {
lastNonEmptyStringIndex--
} else {
break
}
}
return sa[0 : lastNonEmptyStringIndex+1]
}
func main() {
testStringArray := []string{"", "", "aa", "bb", "cc", "", "", ""}
trailingTrimed := RemoveTrailingEmptyStringsInStringArray(testStringArray)
for _, str := range trailingTrimed {
if str == "" {
fmt.Println("nil")
} else {
fmt.Println(str)
}
}
fmt.Println("----")
leadingTrailingTrimed := RemoveLeadingEmptyStringsInStringArray(trailingTrimed)
for _, str := range leadingTrailingTrimed {
if str == "" {
fmt.Println("nil")
} else {
fmt.Println(str)
}
}
}
Tested on: Ubuntu Linux 16.10, Go 1.7.4 & Go Playground.
References:
[1] | Go Slices: usage and internals - The Go Blog |
[2] | Zero values - A Tour of Go |
[3] | Avoiding partially constructed variables : golang |