Как я могу удалить повторяющиеся символы, но оставить два из них? - PullRequest
3 голосов
/ 27 апреля 2010

Если есть более 2 символов «Hiiiiiii Мой друг !!!!!!! "

Мне нужно сократить до «Hii Мой друг !! "

Пожалуйста, поймите, что в моем языке много слов с двойными символами Спасибо заранее

kplla

Ответы [ 3 ]

10 голосов
/ 27 апреля 2010

Perl / regex (и если это не английский, Perl дал мне большую удачу с Unicode, чем с PHP):

#!/usr/bin/perl

$str = "Hiiiiii My Frieeeeend!!!!!!!";

$str =~ s/(.)\1\1+/$1$1/g;

print $str;
2 голосов
/ 27 апреля 2010

Если решение на основе PHP и regex хорошо, вы можете сделать:

$str = "Hiiiiiii My frieeend!!!!!!!";

$str = preg_replace('#(.)\1+#','$1',$str);<br> echo $str; // prints Hi My friend!</s></p> <pre><code>$str = preg_replace('#(.)\1{2,}#','$1$1',$str); echo $str; // prints Hii My frieend!! Вы также можете использовать regex, использованный выше в Perl:

$str = "Hiiiiiii My frieeend!!!!!!!";
$str =~s/(.)\1{2,}/$1$1/g;
</code>
1 голос
/ 27 апреля 2010

Вот еще одно решение регулярных выражений, которое использует lookahead (просто для удовольствия) в Java:

System.out.println(
    "Hiiiiii My Frieeeeend!!!!!!!".replaceAll("(.)(?=\\1\\1)", "")
); // prints "Hii My Frieend!!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...