从字符串中删除最后一个字符的最快方法是什么?我有一个字符串
a,b,c,d,e,
我想删除最后一个',',并取回剩下的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
vsikbqxv1#
“最快最好的代码是不存在的代码”。说到边缘情况,循环后出现的尾随逗号有一个很常见的问题,例如
$str = ''; foreach ($array as $value) { $str .= "$value,"; }
我想,第一个问题也可能是这样。在这种情况下,最快的方法肯定是 * 根本不加 * 结尾逗号:
$str = ''; foreach ($array as $value) { $str .= $str ? "," : ""; $str .= $value; }
这里我们检查$str是否已经有值了,如果有-在下一项之前添加一个逗号 *,这样结果中就没有多余的逗号了。
kh212irz2#
与前面的问题相反,rtrim()将从字符串的末尾删除第二个参数中列出的 * 任意数量 * 的字符。如果只需要一个逗号,则可以使用以下代码:
rtrim()
$newarraynama = rtrim($arraynama, ",");
但在我的例子中,我有两个字符,一个逗号和一个空格,所以我必须改为
$newarraynama = rtrim($arraynama, " ,");
现在它将删除字符串末尾的所有逗号和空格,从a, b, c, d, e,、a, b, c, d, e,,,、a, b, c, d, e,或a, b, c, d, e , ,, , ,返回a, b, c, d, e但是,如果可能有多个逗号,但您只需要删除 * 最后一个 *,则根本不应使用rtrim()-请参阅直接回答该问题的解决方案的其他答案。然而,如果你不知道额外的字符是否存在,rtrim()可能是一个很好的选择。
a, b, c, d, e,
a, b, c, d, e,,,
a, b, c, d, e , ,, , ,
a, b, c, d, e
gfttwv5a3#
您可以使用substr:
substr
echo substr('a,b,c,d,e,', 0, -1); # => 'a,b,c,d,e'
这会将字串从开头隔离到倒数第二个字符(含)。换句话说,它会隔离除了最后一个字符以外的整个字串。如果最后一个字符可能是多字节,则应使用mb_substr()。
mb_substr()
41ik7eoe4#
substr的替代函数如下:
substr_replace($string, "", -1)
它是最快的吗?我不知道,但我敢打赌,这些替代品都是如此之快,* 这只是无关紧要 *。请注意,此函数不是多字节安全的,如果最后一个字符恰好是多字节字符,则会产生不希望的结果。
lnxxn5zx5#
您可以使用
substr(string $string, int $start, int[optional] $length=null);
请参阅PHP文档中的substr。它返回字符串的一部分。
wvt8vs2t6#
使用正则表达式结束字符串锚“$”
$string = preg_replace("/,$/", '', $string);
rkkpypqq7#
如果确实要替换最后一个字符:
$string = "a,b,c,d,e,"; $string[strlen($string)-1] = ""; echo $string; //output: a,b,c,d,e
7条答案
按热度按时间vsikbqxv1#
“最快最好的代码是不存在的代码”。
说到边缘情况,循环后出现的尾随逗号有一个很常见的问题,例如
我想,第一个问题也可能是这样。在这种情况下,最快的方法肯定是 * 根本不加 * 结尾逗号:
这里我们检查$str是否已经有值了,如果有-在下一项之前添加一个逗号 *,这样结果中就没有多余的逗号了。
kh212irz2#
与前面的问题相反,
rtrim()
将从字符串的末尾删除第二个参数中列出的 * 任意数量 * 的字符。如果只需要一个逗号,则可以使用以下代码:但在我的例子中,我有两个字符,一个逗号和一个空格,所以我必须改为
现在它将删除字符串末尾的所有逗号和空格,从
a, b, c, d, e,
、a, b, c, d, e,,,
、a, b, c, d, e,
或a, b, c, d, e , ,, , ,
返回a, b, c, d, e
但是,如果可能有多个逗号,但您只需要删除 * 最后一个 *,则根本不应使用
rtrim()
-请参阅直接回答该问题的解决方案的其他答案。然而,如果你不知道额外的字符是否存在,
rtrim()
可能是一个很好的选择。gfttwv5a3#
您可以使用
substr
:这会将字串从开头隔离到倒数第二个字符(含)。换句话说,它会隔离除了最后一个字符以外的整个字串。
如果最后一个字符可能是多字节,则应使用
mb_substr()
。41ik7eoe4#
substr
的替代函数如下:它是最快的吗?我不知道,但我敢打赌,这些替代品都是如此之快,* 这只是无关紧要 *。
请注意,此函数不是多字节安全的,如果最后一个字符恰好是多字节字符,则会产生不希望的结果。
lnxxn5zx5#
您可以使用
请参阅PHP文档中的substr。它返回字符串的一部分。
wvt8vs2t6#
使用正则表达式结束字符串锚“$”
rkkpypqq7#
如果确实要替换最后一个字符: