我正在尝试删除紧随其后的重复字符。
E.g。 " Whyyyy sooo ssserioooouussss"应该转换为"为什么这么严重"
在PHP PCRE中,这可能是这样的
$text = preg_replace("/(.)\\1+/", "$1", $text);
我试着做以下
var duplicateRegex = regexp.MustCompile(`(?P<char>.)${char}+`)
text = duplicateRegex.ReplaceAllString(text, `${char}`)
但它似乎不起作用。有任何想法吗? 谢谢
答案 0 :(得分:1)
尝试以下代码。它符文符文符文符文。如果符文与上一个符文不同,或者它是第一个符文,则将符文添加到结果中。
func removeDups(s string) string {
var buf bytes.Buffer
var last rune
for i, r := range s {
if r != last || i == 0 {
buf.WriteRune(r)
last = r
}
}
return buf.String()
}
在Go 1.10中,bytes.Buffer可以替换为strings.Builder,以最大限度地减少分配。
答案 1 :(得分:0)
试试这个:
str := "Whyyyy sooo ssserioooouuussss 日本語語語"
fmt.Println(str)
var buf bytes.Buffer
var pc rune
for i, c := range str {
if i == 0{
pc = c
buf.WriteRune(c)
}
if pc == c {
continue
}
pc = c
buf.WriteRune(c)
}
fmt.Println(buf.String())
结果:
Whyyyy sooo ssserioooouuussss 日本語語語
Why so serious 日本語