The best way to count the number of spaces before the first non-space character
of a string in Go is by using the strings.TrimLeft
function as shown below:
func countLeadingSpaces(line string) int {
return len(line) - len(strings.TrimLeft(line, " "))
}
func main() {
str := " This is a string"
fmt.Println(countLeadingSpaces(str)) // 3
}
The countLeadingSpaces
function above trims all the leading space characters
from the original string and subtracts the length of the result from the length
of the original to derive the number of leading spaces.
Another option is to iterate over each character in the string and increment a counter until the first non space character is encountered:
func countLeadingSpaces(line string) int {
count := 0
for _, v := range line {
if v == ' ' {
count++
} else {
break
}
}
return count
}
func main() {
str := " This is a string"
fmt.Println(countLeadingSpaces(str)) // 3
}
Thanks for reading, and happy coding!