从字符串中删除最后一个字符

I-M*_*-JM 675 php

可能重复:
PHP - 删除最后一个字符,如果它是一段时间?

哪个是从字符串中删除最后一个字符的最快方法?

我有一个字符串

a,b,c,d,e,
Run Code Online (Sandbox Code Playgroud)

我想删除最后一个','并将剩余的字符串取回

OUTPUT: a,b,c,d,e
Run Code Online (Sandbox Code Playgroud)

最快的方法是什么?

小智 1173

首先我尝试没有空格rtrim($arraynama, ",");并得到错误结果.

然后我添加一个空格并获得良好的结果: rtrim($arraynama, ",");

  • 请注意,这不会回答标题中发布的问题. (37认同)
  • 请注意,这是一种在CSV字符串末尾删除额外逗号的危险方法(在循环中连接值时非常常见).这确实会把"A; B; C; D;"变成"A; B; C; D",但也会把"A; B ;;;"变成"A; B".通常,人们希望保留空值之间的分隔符,因为CSV解析器可能需要确定字符串本身的字段数. (8认同)
  • 怎么样?你能提供一个例子吗? (4认同)
  • @IM只需用你的数据替换`$ string`,然后回显整个事情:`echo rtrim("a,b,c,d,e,",",");` (4认同)

Nic*_*tti 871

您可以使用 substr

echo substr('a,b,c,d,e,', 0, -1);
# => 'a,b,c,d,e'
Run Code Online (Sandbox Code Playgroud)

  • 这应该是接受的答案 - 它会删除最初要求的最后一个字符(不仅仅是','). (31认同)
  • 这是好方法.我想从字符串中删除最后一个逗号,如:"a,b,c,d ,,"这是正确的解决方案,因为如果使用rtrim(),它将删除最后两个逗号. (25认同)
  • `trim`和`rtrim`不会删除字符串中的最后一个字符.虽然有时他们只是这样做,但他们通常会从字符串中删除许多字符.例如`rtrim('Assess','s')`给你'Asse',而不是'Asses'.这就是为什么这个答案比接受的答案更好的原因. (3认同)
  • 代码有问题,请改用:`$substring = substr($string, 0, strlen($string)-1);` (2认同)

bar*_*art 107

substr以下是一个替代方案,作为一个功能:

substr_replace($string, "", -1)
Run Code Online (Sandbox Code Playgroud)

它是最快的吗?我不知道,但我愿意打赌这些替代方案都是如此之快以至于无关紧要.

  • "如此之快,无关紧要"的问题是,它可能处于循环中.想象一下,对于长文本中的每个字母,代码执行50次.突然间,每一点点的表现都很重要. (2认同)

Pet*_*nee 13

您可以使用

substr(string $string, int $start, int[optional] $length=null);
Run Code Online (Sandbox Code Playgroud)

请参阅PHP文档中的substr.它返回字符串的一部分.


小智 5

使用正则表达式字符串锚点“$”结尾

$string = preg_replace("/,$/", '', $string);
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

922238 次

最近记录:

6 年,4 月 前