我试图删除直接相邻的重复字符
1,2,3,4,5 - 有一些逗号,但不能删除它们 无论在每个数字之间有多少个逗号我想要只有一个,所以必须将1,2,3,4,4,5变成规则的1,2,3,4,5。我有类似的东西,以确保字符串末尾没有逗号:
$n = "1,2,3,4,5";
for ($i=0;$i< strlen($n);$i++) {
if (substr($n, -1) == ',') {
$n = substr($n, 0, -1);
}
}
希望对此事有所帮助,
谢谢:)
答案 0 :(得分:34)
看起来你只想用逗号来做这件事,所以使用preg_replace非常容易:
$n = '1,2,,3,,,,,4,5';
$n = preg_replace('/,+/', ',', $n); // $n == '1,2,3,4,5'
此外,您可以替换上面提供的代码,以确保在rtrim的字符串末尾没有逗号。它会更快更容易阅读:
$n = '1,2,3,4,5,,,,,'
rtrim($n, ','); // $n == '1,2,3,4,5'
您可以将它们组合成一行:
$n = preg_replace('/,+/', ',', rtrim($n, ','));
答案 1 :(得分:12)
$n = '1,2,,3,,,,,4,5';
$n = preg_replace('/(.)\\1+/', '$1', $n);
但是,提问者不太可能以这种方式替换任何字符重复(包括44 =&gt; 4等数字)。更有可能的是,这样的事情是:
$n = preg_replace('/([,.;])\\1+/', '$1', $n); # replace repetitions of ,.:
$n = preg_replace('/([^\d])\\1+/', '$1', $n); # replace repetitions of non-digit characters