golang关于字符串替换的建议运⾏下⾯⼀段代码
package main
import(
"fmt"
"regexp"
)
func main(){
tmp :="/Users/max/Downloads/test/website\\nbackup\n"
buf :=[]byte(tmp)
a :="/Users/max/Downloads/test/website\\nbackup"
r := regexp.MustCompile(a +"\n")
taskText := r.ReplaceAllString(string(buf[:]),"")
fmt.Println(r.String()==string(buf[:]))
fmt.Printf("%q\n", r.String())
fmt.Printf("%q\n",string(buf[:]))
fmt.Printf("%q\n", taskText)
}
结果输出:
true
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
可以发现,字符串并没有被替换
然后,我们更改⼀句代码
package main
import(
"fmt"
"regexp"
"strings"
)
func main(){
tmp :="/Users/max/Downloads/test/website\\nbackup\n"
buf :=[]byte(tmp)
a :="/Users/max/Downloads/test/website\\nbackup"
r := regexp.MustCompile(a +"\n")
// taskText := r.ReplaceAllString(string(buf[:]), "")
taskText := strings.ReplaceAll(string(buf[:]), r.String(),"")
fmt.Println(r.String()==string(buf[:]))
fmt.Printf("%q\n", r.String())
fmt.Printf("%q\n",string(buf[:]))
fmt.Printf("%q\n", taskText)
}
结果输出:
true
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
""
replaceall()可以发现,字符串可以被替换
所以,建议在使⽤字符串替换时,避免使⽤正则表达式的ReplaceAllString⽅法,⽽应该选择更为稳妥的strings包中的ReplaceAll⽅法。为什么这两种⽅法会产⽣差异,由于时间关系,暂未仔细了解,希望有了解的⼩伙伴下⽅留⾔指导⼀下。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论