使用以下内容作为起点,我可以使工作正常。
How to insert a Character every X Characters in a String in Golang?
但是我想知道是否有一种惯用的方式编写golang来完成我想做的事情,这是第一个fmt.Println的输出,如下所示:package main
import (
"bytes"
"fmt"
)
func insertStringInto(s string, interval int, sep string) string {
var buffer bytes.Buffer
before := interval - 1
last := len(s) - 1
for i, char := range s {
buffer.WriteRune(char)
if i%interval == before && i != last {
buffer.WriteString(sep)
}
}
return buffer.String()
}
func main() {
fmt.Println("0x" + insertStringInto("01234567891011121314151617181920", 2, ", 0x"))
fmt.Println(insertStringInto("01234567891011121314151617181920", 2, ", 0x"))
}
产生以下内容:
0x01, 0x23, 0x45, 0x67, 0x89, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20
01, 0x23, 0x45, 0x67, 0x89, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20
下面链接到play.golang.org:
您可以使用正则表达式
package main
import (
"fmt"
"regexp"
"strings"
)
func AnotherWay(s string, after int, sep string) string {
ex, _ := regexp.Compile(`([0-9]{2})`)
return strings.TrimSuffix(ex.ReplaceAllString(s, sep+"$1, "), ", ")
}
func main() {
fmt.Println(AnotherWay("01234567891011121314151617181920", 2, "0x"))
}