如果超过2个字符 “Hiiiiiii 我的朋友!!!!!!!“
我需要减少到 “斐伊川 我的朋友!!“
请注意,在我的语言中,有很多双字符的单词。 Thnx提前
kplla
答案 0 :(得分:10)
Perl / regex(如果它不是英文版,Perl给我的运气比Unicode更好):
#!/usr/bin/perl
$str = "Hiiiiii My Frieeeeend!!!!!!!";
$str =~ s/(.)\1\1+/$1$1/g;
print $str;
答案 1 :(得分:2)
如果基于PHP
和regex
的解决方案很好,您可以这样做:
$str = "Hiiiiiii My frieeend!!!!!!!";
$str = preg_replace('#(.)\1+#','$1',$str);
echo $str; // prints Hi My friend!
$str = preg_replace('#(.)\1{2,}#','$1$1',$str);
echo $str; // prints Hii My frieend!!
You can make use of the regex
used above in Perl
too:
$str = preg_replace('#(.)\1{2,}#','$1$1',$str);
echo $str; // prints Hii My frieend!!
答案 2 :(得分:1)
这是另一个使用lookahead(只是为了好玩)的正则表达式解决方案,在Java中:
System.out.println(
"Hiiiiii My Frieeeeend!!!!!!!".replaceAll("(.)(?=\\1\\1)", "")
); // prints "Hii My Frieend!!"