Aim: to insert a character every x characters in a string in Golang
Input: helloworldhelloworldhelloworld
Expected Output: hello-world-hello-world-hello-world
Attempts
Attempt one
package main
import (
"fmt"
"strings"
)
func main() {
s := "helloworldhelloworldhelloworld"
s = strings.Replace(s, "world", ",", -1)
fmt.Println(s)
}
results in: hello,hello,hello,
Attempt two
-
Attempt three
Problem
The reason that attempts two and three do not contain code snippets at the moment is that I am still thinking what approach should be used to insert a character every X characters in a string in Golang.
https://play.golang.org/p/HEGbe7radf
This function just inserts '-' each Nth element
func insertNth(s string,n int) string {
var buffer bytes.Buffer
var n_1 = n - 1
var l_1 = len(s) - 1
for i,rune := range s {
buffer.WriteRune(rune)
if i % n == n_1 && i != l_1 {
buffer.WriteRune('-')
}
}
return buffer.String()
}
I feel the following solution is worth mentioning:
package main
import "fmt"
var s = "helloworldhelloworldhelloworld"
func main() {
for i := 5; i < len(s); i += 6 {
s = s[:i] + "-" + s[i:]
}
fmt.Println(s)
}
https://play.golang.org/p/aMXOTgiNHf
According to the Go documentation strings are a read only Slice of bytes.. With that in mind there is an issue that comes up. What character set are you using? You can see some examples of where things get weird here and here.
Despite the complexity there still is a simple answer
s = strings.Replace(s, "hello", "hello-", -1)
s = strings.Replace(s, "world", "world-", -1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With