字符串替换而不使用任何内置函数

时间:2017-05-14 06:31:33

标签: php arrays string algorithm

使用程序替换字符串中的子字符串而不使用str_replace

应该是通用函数应该适用于以下示例:

  1. Word:Hello world 替换字:llo 替换为:zz 输出应该是:Hezz world

  2. Word:Hello world 替换字:o 替换为:xx 输出应为:Hellxx wxxrld

  3. 这是我写的解决方法

    function stringreplace($str, $stringtoreplace, $stringreplaceby){
        $i=0;$add='';
        while($str[$i] != ''){
            $add .= $str[$i];
            $j=0;$m=$i;$l=$i;$check=0;
            if($str[$i] == $stringtoreplace[$j]){
                while($stringtoreplace[$j] != ''){
                    if($str[$m] == $stringtoreplace[$j]){
                        $check++;
                    }
                    $j++;$m++;
                }
                if($check == strlen($stringtoreplace)){
                    $n=0;$sub='';
                    for($n=0;$n<=strlen($stringtoreplace);$n++){    
                    $str[$l] = ''; 
                        $sub .= $str[$l];
                        $l++;
                    }
                    $add .= $stringreplaceby;
                    $i += $check;
                }
            }
    
            $i++;
        }//echo $add;exit;
        return $add;
    }
    

    我将输出作为helzzworld。 请看看我做错了什么,或者你有更好的解决方案,请建议。

3 个答案:

答案 0 :(得分:0)

在不使用var someVar = someFunction('url-to-the-json'); 的情况下尝试这个最简单的,我们正在使用str_replaceexplode以及implode

  

1。 substr_count用于计算和检查子串的存在。

     

2。 substr_count用于在匹配的子字符串的基础上将字符串扩展到数组中。

     

3。 explode将字符串与替换字符串连接。

Try this code snippet here

implode

解决方案2:

Try this code snippet here <?php ini_set('display_errors', 1); $string="Hello world"; echo strReplace($string,"llo","zz"); echo strReplace($string,"o","xx"); function strReplace($string,$toReplace,$replacement) { if(substr_count($string, $toReplace)) { $array=explode($toReplace,$string); return implode($replacement, $array); } }

not best, but working

答案 1 :(得分:0)

你可以通过将主字符串分解为数组然后将你的stringreplaceby内爆到你的数组部分来创建新的字符串

 <?php
    function stringreplce($str,$strreplace,$strreplaceby){
        $str_array=explode($strreplace,$str);
        $newstr=implode($strreplaceby,$str_array);
        return $newstr;
    }
    echo stringreplce("Hello World","llo","zz")."<br>";
    echo stringreplce("Hello World","Hel","zz")."<br>";
    echo stringreplce("Hello World"," Wo","zz")."<br>";
    echo stringreplce("Hello World","rl","zz")."<br>";
    echo stringreplce("Hello World","ld","zz")."<br>";
    ?>

答案 2 :(得分:0)

function ganti_kata($kata,$kata_awal,$kata_ganti){
    $i =0; $hasil;
    $panjang = strlen($kata);
    while ($i < $panjang) {
        if ($kata[$i] == $kata_awal) {
            $hasil[$i] = $kata_ganti;
            echo $hasil[$i];
        }
        else if ($kata[$i] !== $kata_awal){
            $hasil[$i] = $kata[$i];
            echo $hasil[$i];
        }
        $i++;
    }
}
echo ganti_kata('Riowaldy Indrawan','a','x');

此代码使用php