Go 删除紧随其后的重复字符
我正在尝试删除紧跟在后面的重复字符 例如,“Whyyyy-sooo-ssserioouusss”应翻译为“Why-soo-ssserioouusss” 在PHP PCRE中,这是可能的Go 删除紧随其后的重复字符,go,Go,我正在尝试删除紧跟在后面的重复字符 例如,“Whyyyy-sooo-ssserioouusss”应翻译为“Why-soo-ssserioouusss” 在PHP PCRE中,这是可能的 $text = preg_replace("/(.)\\1+/", "$1", $text); 我试着做下面的事情 var duplicateRegex = regexp.MustCompile(`(?P<char>.)${char}+`) text = duplicateRegex.Replace
$text = preg_replace("/(.)\\1+/", "$1", $text);
我试着做下面的事情
var duplicateRegex = regexp.MustCompile(`(?P<char>.)${char}+`)
text = duplicateRegex.ReplaceAllString(text, `${char}`)
var duplicateRegex=regexp.MustCompile(`(?P.)${char}+`)
text=duplicateRegex.ReplaceAllString(文本,`${char}`)
但在围棋中似乎不起作用。有什么想法吗?
谢谢试试这个:
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 日本語
试试这个:
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 日本語
请尝试以下代码。它的范围是一个接一个的字符串符文。如果符文与上一个不同,或者是第一个符文,那么将符文添加到结果中
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中,可以替换为以最小化分配。尝试以下代码。它的范围是一个接一个的字符串符文。如果符文与上一个不同,或者是第一个符文,那么将符文添加到结果中
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中,可以替换为以最小化分配。AFAIK,Go正则表达式中没有反向引用,因此
${char}
,\k
。。。在模式本身中不起作用。AFAIK,Go正则表达式中没有返回引用,因此${char}
,\k
。。。在模式本身中不起作用。