InputOutput
abc abc___
a a___
abcdeabcde_
Attempt
package main
import "fmt"
import "unicode/utf8"
func main() {
input := "abc"
if utf8.RuneCountInString(input) == 1 {
fmt.Println(input + "_____")
} else if utf8.RuneCountInString(input) == 2 {
fmt.Println(input + "____")
} else if utf8.RuneCountInString(input) == 3 {
fmt.Println(input + "___")
} else if utf8.RuneCountInString(input) == 4 {
fmt.Println(input + "__")
} else if utf8.RuneCountInString(input) == 5 {
fmt.Println(input + "_")
} else {
fmt.Println(input)
}
}
returns
abc___
Discussion
Although the code is creating the expected output, it looks very verbose and devious.
Question
Is there a concise way?
The strings package has a Repeat
function, so something like
input += strings.Repeat("_", desiredLen - utf8.RuneCountInString(input))
would be simpler. You should probably check that desiredLen
is smaller than inpult length first.