我将如何删除重复的字符(例如,删除信件k中cakkkke为它是cake)?
一种直接的方法是循环遍历字符串的每个字符,如果字符不是前一个字符的重复,则将字符串的每个字符附加到新字符串.
以下是一些可以执行此操作的代码:
$newString = '';
$oldString = 'cakkkke';
$lastCharacter = '';
for ($i = 0; $i < strlen($oldString); $i++) {
if ($oldString[$i] !== $lastCharacter) {
$newString .= $oldString[$i];
}
$lastCharacter = $oldString[$i];
}
echo $newString;
Run Code Online (Sandbox Code Playgroud)
有没有办法使用正则表达式或内置函数更简洁地做同样的事情?
Dog*_*ert 38
使用backrefrences
echo preg_replace("/(.)\\1+/", "$1", "cakkke");
Run Code Online (Sandbox Code Playgroud)
输出:
cake
Run Code Online (Sandbox Code Playgroud)
说明:
(.) 捕获任何角色
\\1是对第一个捕获组的反向引用.在.这种情况下的上方.
+ 使反向引用匹配至少为1(这样它匹配aa,aaa,aaaa,但不匹配a)
在这种情况下,使用第一个捕获组$1替换完全匹配的文本kkk,替换它k.