按任意字符串分割,示例按%;%分割
package main
import (
"bufio"
"bytes"
"fmt"
"strings"
)
func main() {
str := `asd;%;%1f{"/"};%sd`
sr := strings.NewReader(str)
scanner := bufio.NewScanner(sr)
scanner.Split(SplitFunc("%;%"))
for scanner.Scan() {
text := scanner.Text()
fmt.Println(text)
}
}
func SplitFunc(delim string) bufio.SplitFunc {
ln := len(delim)
delimbs := []byte(delim)
return func(data []byte, atEOF bool) (advance int, token []byte, err error) {
if atEOF && len(data) == 0 {
return 0, nil, nil
}
if i := bytes.Index(data, delimbs); i >= 0 {
return i + ln, data[0:i], nil
}
if atEOF {
return len(data), data, nil
}
return 0, nil, nil
}
}
输出
asd;
1f{"/"};%sd
本文介绍了一个使用Go语言实现的自定义字符串分割功能,通过 bufio.Scanner 对复杂字符串进行按指定分隔符 '%;%' 的切割,并展示了如何遍历切割后的每一部分。
7万+

被折叠的 条评论
为什么被折叠?



