如何删除以[]byte
中某些子字符串开头的行,Ruby
通常我会这样做:
lines = lines.split("\n").reject{|r| r.include? 'substring'}.join("\n")
如何在Go
上执行此操作?
答案 0 :(得分:7)
你可以用regexp来模仿:
re := regexp.MustCompile("(?m)[\r\n]+^.*substring.*$")
res := re.ReplaceAllString(s, "")
(OP Kokizzu went与"(?m)^.*" +substr+ ".*$[\r\n]+"
)
请参阅this example
func main() {
s := `aaaaa
bbbb
cc substring ddd
eeee
ffff`
re := regexp.MustCompile("(?m)[\r\n]+^.*substring.*$")
res := re.ReplaceAllString(s, "")
fmt.Println(res)
}
输出:
aaaaa
bbbb
eeee
ffff
请注意使用regexp flag (?m):
多行模式:
^
和$
匹配开头/结尾行以及开头/结尾文本(默认为false)
答案 1 :(得分:2)
我认为使用bytes
包执行此任务比使用regexp
更好。
package main
import (
"fmt"
"bytes"
)
func main() {
myString := []byte("aaaa\nsubstring\nbbbb")
lines := bytes.Replace(myString, []byte("substring\n"), []byte(""), 1)
fmt.Println(string(lines)) // Convert the bytes to string for printing
}
输出:
aaaa
bbbb