Удалить последний символ из строки

Возможный дубликат:
PHP - удалить последний символ, если это точка?

Какой самый быстрый способ удалить последний символ из строки?

У меня есть строка как

a,b,c,d,e,

Я хотел бы удалить последний ',' и вернуть оставшуюся строку

OUTPUT: a,b,c,d,e

Какой самый быстрый способ сделать это?

7 ответов

Решение

Сначала я пробую без места rtrim($arraynama,","); и получите результат ошибки.

Затем я добавляю пробел и получаю хороший результат: $newarraynama=rtrim($arraynama,", ");

Ты можешь использовать substr

echo substr('a,b,c,d,e,', 0, -1);
# => 'a,b,c,d,e'

Альтернатива substr является следующим, как функция:

substr_replace($string, "", -1)

Это самый быстрый? Я не знаю, но я готов поспорить, что эти альтернативы настолько быстрые, что это просто не имеет значения.

Ты можешь использовать

substr(string $string, int $start, int[optional] $length=null);

Смотрите substr в документации по PHP. Возвращает часть строки.

Используйте якорь конца строки регулярного выражения "$"

      $string = preg_replace("/,$/", '', $string);

если вы действительно хотите заменить последний символ:

      $string = "a,b,c,d,e,";

$string[strlen($string)-1] = "";

echo $string; //output: a,b,c,d,e

«Самый быстрый лучший код — это код, которого не существует».

Говоря о крайних случаях, существует довольно распространенная проблема с замыкающей запятой, которая появляется после цикла, например

      $str = '';
foreach ($array as $value) {
    $str .= "$value,";
}

что, я полагаю, также может иметь место в исходном вопросе. В этом случае самым быстрым способом определенно было бы вообще не добавлять запятую:

      $str = '';
foreach ($array as $value) {
    $str .= $str ? "," : "";
    $str .= $value;
}

здесь мы проверяем, имеет ли $str какое-либо значение, и если да, то добавляем запятую перед следующим элементом, чтобы в результате не было лишних запятых.

Другие вопросы по тегам