按任意字符串分割,示例按%;%分割
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