从字符串中删除最后一个字符的最快方法是什么?
我有一根绳子
a,b,c,d,e,
我想删除最后一个“,”并取回剩余的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
从字符串中删除最后一个字符的最快方法是什么?
我有一根绳子
a,b,c,d,e,
我想删除最后一个“,”并取回剩余的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
当前回答
如果确实要替换最后一个字符:
$string = "a,b,c,d,e,";
$string[strlen($string)-1] = "";
echo $string; //output: a,b,c,d,e
其他回答
使用字符串锚定符“$”的正则表达式结尾
$string = preg_replace("/,$/", '', $string);
您可以使用substr:
echo substr('a,b,c,d,e,', 0, -1);
# => 'a,b,c,d,e'
这将字符串从开始到最后一个字符(包括第二个字符)进行隔离。换句话说,它隔离了除最后一个字符之外的整个字符串。
如果最后一个字符可以是多字节,则应改用mb_substr()。
如果确实要替换最后一个字符:
$string = "a,b,c,d,e,";
$string[strlen($string)-1] = "";
echo $string; //output: a,b,c,d,e
substr的另一种替代方法是以下函数:
substr_replace($string, "", -1)
它是最快的吗?我不知道,但我敢打赌,这些替代方案都很快,根本不重要。
请注意,此函数不是多字节安全的,如果最后一个字符恰好是多字节字符,则会产生不希望的结果。
与所问的问题相反,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,
但如果可能有多个逗号,但只需要删除最后一个逗号,则根本不应使用rtrim()-请参阅直接回答问题的解决方案的其他答案。
然而,如果您不知道是否存在额外的字符,rtrim()可能是一个不错的选择。与基于substr的解决方案不同,它将从a,b,c,d,e返回a,b、c、d,e