当前位置:  开发笔记 > 编程语言 > 正文

更改字符时拆分字符串

如何解决《更改字符时拆分字符串》经验,为你挑选了2个好方法。

我正在尝试创建一个在所有"不同字符之间有空格的字符串,例如:

"11131221133112" should result in "111 3 1 22 11 33 11 2"
"1321131112" should result in "1 3 2 11 3 111 2"

我尝试使用递归函数,不知道这是否是最好的方法因为我在PHP中找不到任何内置函数.这是我的功能:

function stringSplitter($str) {
    $strArr = str_split($str);

    foreach ($strArr as $key => $value) {
        if ($key == count($strArr)-1) return (substr($str, 0));

        if ($value != $strArr[$key+1]) {
            return (substr($str, 0, $key+1)." ".stringSplitter(substr($str, $key)));
        }
    }
}

出于某种原因,这个函数似乎无限迭代,我无法弄清楚为什么.我哪里出错了?

有一个更好的方法吗?我想使用explode来解决数组中的应答字符串,这可以直接完成吗?



1> Halayem Anis..:

RegEx方法,
在RegEx \ 1中,它是对\ d捕获的内容的反向引用

 



2> Chetan Ameta..:

最简单的解决方案是:

$string = '11131221133112';
$strarr = str_split($string);
$tmp = null;
$newstr = '';
foreach($strarr as $a){
    $newstr .= ($a == $tmp) ? $a:' '.$a;
    $tmp = $a;
}

echo $newstr;

输出: 111 3 1 22 11 33 11 2

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有