从字符串中删除最后一个字符的最快方法是什么?
我有一根绳子
a,b,c,d,e,
我想删除最后一个“,”并取回剩余的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
从字符串中删除最后一个字符的最快方法是什么?
我有一根绳子
a,b,c,d,e,
我想删除最后一个“,”并取回剩余的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
当前回答
“最快的最佳代码是不存在的代码”。
说到边缘情况,循环后出现的尾随逗号有一个非常常见的问题,例如
$str = '';
foreach ($array as $value) {
$str .= "$value,";
}
我想,最初的问题也可能是这样。在这种情况下,最快的方法肯定是根本不添加尾随逗号:
$str = '';
foreach ($array as $value) {
$str .= $str ? "," : "";
$str .= $value;
}
这里,我们检查$str是否已经有任何值,如果有,在下一项之前添加逗号,因此结果中没有多余的逗号。
其他回答
使用字符串锚定符“$”的正则表达式结尾
$string = preg_replace("/,$/", '', $string);
“最快的最佳代码是不存在的代码”。
说到边缘情况,循环后出现的尾随逗号有一个非常常见的问题,例如
$str = '';
foreach ($array as $value) {
$str .= "$value,";
}
我想,最初的问题也可能是这样。在这种情况下,最快的方法肯定是根本不添加尾随逗号:
$str = '';
foreach ($array as $value) {
$str .= $str ? "," : "";
$str .= $value;
}
这里,我们检查$str是否已经有任何值,如果有,在下一项之前添加逗号,因此结果中没有多余的逗号。
您可以使用
substr(string $string, int $start, int[optional] $length=null);
请参见PHP文档中的substr。它返回字符串的一部分。
substr的另一种替代方法是以下函数:
substr_replace($string, "", -1)
它是最快的吗?我不知道,但我敢打赌,这些替代方案都很快,根本不重要。
请注意,此函数不是多字节安全的,如果最后一个字符恰好是多字节字符,则会产生不希望的结果。
如果确实要替换最后一个字符:
$string = "a,b,c,d,e,";
$string[strlen($string)-1] = "";
echo $string; //output: a,b,c,d,e