Как удалить символы из строки? - PullRequest
0 голосов
/ 01 июня 2010

(мой первый пост был непонятным и запутанным, поэтому я отредактировал вопрос)

Я изучал манипуляции со струнами. Вы можете использовать strlen () или substr (), но не можете полагаться на другие функции, которые предопределены в библиотеках.

Заданная строка $string = "This is a pen", удалить "is" так, чтобы возвращаемое значение "Th a pen" (включая 3 пробела).

Удалить «is» означает, что если строка «Tsih», мы не удаляем ее. Только «есть» удаляется.

Я пробовал (показано ниже), но возвращаемое значение неверно. Я провел тестовый тест и Я все еще собираю разделитель.

Заранее спасибо!

function remove_delimiter_from_string(&$string, $del) {
    for($i=0; $i<strlen($string); $i++) {
        for($j=0; $j<strlen($del); $j++) {
            if($string[$i] == $del[$j]) {
                $string[$i] = $string[$i+$j]; //this grabs delimiter :(
            }
        }
    }
    echo $string . "\n";
}

Ответы [ 3 ]

2 голосов
/ 01 июня 2010

Уточнение, исходный запрос не Implement a str_replace, это remove 'is' from 'this is a pen' without any functions and no extra white spaces between words. Самый простой способ - это $string[2] = $string[3] = $string[5] = $string[6] = '', но это оставит дополнительный пробел между Th и a (Th[ ][ ]a).

Ну вот, вообще никаких функций

$string = 'This is a pen';
$word = 'is';
$i = $z = 0;

while($string[$i] != null) $i++;
while($word[$z] != null) $z++;

for($x = 0; $x < $i; $x++) 
 for($y = 0; $y < $z; $y++)
  if($string[$x] === $word[$y])
   $string[$x] = '';
1 голос
/ 01 июня 2010

Если бы вам было позволено использовать substr (), это было бы намного проще. Тогда вы можете просто зациклить его и проверить соответствие значения, почему вы не можете использовать substr (), но вы можете strlen ()?

Но без, это работает по крайней мере:

echo remove_delimiter_from_string("This is a pen","is");

function remove_delimiter_from_string($input, $del) {
    $result = "";
    for($i=0; $i<strlen($input); $i++) {
        $temp = "";
        if($i < (strlen($input)-strlen($del))) {
            for($j=0; $j<strlen($del); $j++) {
                $temp .= $input[$i+$j];
            }
        }
        if($temp == $del) {
            $i += strlen($del) - 1;
        } else {
            $result .= $input[$i];
        }
    }
    return $result;
}
0 голосов
/ 20 августа 2011

Следующий код также может использоваться для замены подстроки:

$restring = replace_delimiter_from_string("This is a pen","is", "");
var_dump($restring);
$restring = replace_delimiter_from_string($restring,"  ", " ");
var_dump($restring);

function replace_delimiter_from_string($input, $old, $new) {
    $input_len = strlen($input);
    $old_len = strlen($old);
    $check_len = $input_len-$old_len;

    $result = "";
    for($i=0; $i<=$check_len;) {
        $sub_str = substr($input, $i, $old_len);
        if($sub_str === $old) {
            $i += $old_len;
            $result .= $new;
        }
        else {
            $result .= $input[$i];
            if($i==$check_len) {
                $result = $result . substr($input, $i+1);
            }
            $i++;
        }
    }
    return $result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...