21,886
社区成员
发帖
与我相关
我的任务
分享
<?php
/**
* 剔除重复字符
*
* @param String $str 需要处理的字符串
* @param Array<String> [$_sp] 需要削剔的字符列表
* @return String $_result
*/
function trimLetter($str,array $_sp = array()){
$_strLen = strlen($str);
$_result = null;
$_cStr = null;
$_cStrC = null;
$_isEqual = false;
settype($_sp,'array'); // 多疑的人就加上 -_-#
$_isSpEmpty = empty($_sp);
for ($i=0;$i<$_strLen;$i++)
{
$_cStr = $str[$i];
$_cStrC = $str[$i+1];
$_isEqual = ($_cStr == $_cStrC);
if (!$_isSpEmpty)
{
if (in_array($_cStr,$_sp))
{
if(!$_isEqual)
{
$_result .= $_cStr;
}
}else{
$_result .= $_cStr;
}
}else{
if(!$_isEqual)
{
$_result .= $_cStr;
}
}
}
return $_result;
}
$str = 'AABBCCDDEEFFGGHH';
echo trimLetter($str); # ABCDEFGH
echo "\n";
echo trimLetter($str,array('A','C')); # ABBCDDEEFFGGHH
?>
<?php
//把字符串中的任意连续字符换成一个对应字符
function trimLetter($str){
$_strLen = strlen($str);
$_result = null;
$_resultLen = 0;
$_cStr = null;
$_pResult = null;
for ($i=0;$i<$_strLen;$i++)
{
$_cStr = $str[$i];
$_pResult = $_result[$_resultLen-1];
if($_cStr != $_pResult)
{
$_resultLen++;
$_result .= $_cStr;
}
}
return $_result;
}
$str = "AACCCCCCCCCCAAAAAAAAAAAAAACCCCCCCCCCCCCCCAAAAAAAAAAAAACCCCCCCCCCC";
echo trimLetter($str); // ACACAC
?>
$str1 = 'A B C ';
$str2 = 'AMMMBMMMMCMM ';
$str3 = 'ACCCB CCCCCGGG OOO YYYFFFXXXZZZZZ';
echo trim_more_letter($str1);
echo trim_more_letter($str2);
echo trim_more_letter($str3);
function trim_more_letter($str)
{
if(is_string($str))
{
$new_str=str_split($str,1);
$return_str=array_unique($new_str);
return implode('',$return_str);
}
}
/*
结果:A BC
结果:AMBC
结果:ACB GOYFXZ
*/
$str1 = 'A B C ';
$str2 = 'AMMMBMMMMCMM ';
echo trim_letter($str2,'M');
function trim_letter($str,$spe)
{
if(is_string($str))
{
$new_str=explode($spe,$str);
$return_str=$spe.implode('',$new_str);
return $return_str;
}
}
$str1 = 'ACCCB CCCCCGGG OOO YYYFFFXXXZZZZZ';
echo trim_more_letter($str1);
function trim_more_letter($str)
{
if(is_string($str))
{
$new_str=str_split($str,1);
$return_str=array_unique($new_str);
return implode('',$return_str);
}
}
<?php
//把字符串中的任意连续字符换成一个对应字符
$str1 = "ACCCB CCCCCGGG OOO YYYFFFXXXZZZZZ";
echo $str1 . " <br />";
$len = strlen($str1);
$str2 = $str1[0];
$ch = $str2;
for($i=1; $i<$len; $i++){
$ch2=$str1[$i];
if($ch!=$ch2){
$str2.=$ch2;
$ch=$ch2;
}
}
echo $str2 . "<br />";
?>