Удалить последний символ из строки
Возможный дубликат:
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 какое-либо значение, и если да, то добавляем запятую перед следующим элементом, чтобы в результате не было лишних запятых.