【问题标题】:Remove the last character from a string [duplicate]从字符串中删除最后一个字符[重复]
【发布时间】:2011-08-01 08:51:17
【问题描述】:

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

我有一个类似的字符串

a,b,c,d,e,

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

OUTPUT: a,b,c,d,e

最快的方法是什么?

【问题讨论】:

  • 如果这个字符串是通过循环连接的,你可以使用“implode”它会在没有最后一个逗号的情况下连接
  • @Tufan Barış Yıldırım:字符串连接不在循环中
  • 请不要担心“最快”而不先进行某种重要的测量。与其担心最快,不如想想哪种方式最清晰。
  • 这不应被标记为重复,因为另一个问题表明您知道最后一个字符是什么(“句号”)。
  • @FruitBreak 没有正确标记,因为您可以看到 I-M-JM 接受了哪个答案。又是trim()。所以他的意思是“如何从字符串中删除最后一个特定字符?”而不是“最后一个”。所有其他答案都是“错误的”。唯一错误的重复标记是this question

标签: php


【解决方案1】:

首先,我尝试不带空格 rtrim($arraynama, ","); 并得到错误结果。

然后我加个空格,得到了不错的结果:

$newarraynama = rtrim($arraynama, ", ");

【讨论】:

  • 怎么样?可以举个例子吗
  • @I-M 只需将$string 替换为您的数据,然后回显整个内容:echo rtrim("a,b,c,d,e,", ",");
  • 真的很棒!,至少对我来说......我也在寻找这个......并在这里找到它......谢谢+1
  • 请注意,这并不能回答标题中发布的问题。
  • 请注意,这是删除 CSV 字符串末尾多余逗号的危险方法(在循环中连接值时很常见的问题)。这确实会将A;B;C;D; 转换为A;B;C;D,但也会将A;B;;; 转换为A;B。人们通常希望保留空值之间的分隔符,因为 CSV 解析器可能需要从字符串本身确定字段的数量。
【解决方案2】:

你可以使用substr

echo substr('a,b,c,d,e,', 0, -1);
# => 'a,b,c,d,e'

【讨论】:

  • 这是个好办法。我想从字符串中删除最后一个逗号:“a,b,c,d,”,这是正确的解决方案,因为如果您使用 rtrim(),它将删除最后两个逗号。
  • 这对我来说非常有效,非常棒的方法,不知道你可以在那里使用负数并从 0 开始。我同意上面的评论,这比 rtrim 好得多,我有一个类似的问题,我不想删除最后一个字符,而是字符串末尾的 SQL 字符串中的一个单词,例如“AND”,所以我将它与 substr("sqlstatement", 0, -7);删除我正在编写的 WHERE AND 子句序列中的最后一个 AND。工作就像一个魅力:)。
  • 这应该是公认的答案 - 它删除了最初要求的最后一个字符(不仅仅是',')。
  • trimrtrim 不会删除字符串中的最后一个字符。尽管有时这就是他们所做的一切,但他们通常会从字符串中删除许多字符。例如rtrim('Assess','s') 给你'Asse',而不是'Asses'。这就是为什么这个答案比公认的答案更好。
  • 代码错误,改用这个:$substring = substr($string, 0, strlen($string)-1);
【解决方案3】:

substr 的替代方法如下,作为函数:

substr_replace($string, "", -1)

它是最快的吗?我不知道,但我敢打赌,这些替代方案都非常快,没关系

【讨论】:

  • “这么快,没关系”的问题在于,它可能处于循环中。想象一下,对于长文本中的每个字母,该代码会执行 50 次。突然间,每一点表现都很重要。
  • @直到我不确定它是否像那样工作,我没有检查来源,但我认为substr_replace($str, $replacement, $start[, $length]) 最后几个参数限制了“手术干预”的字母。 IE。 substringing 只会分析/替换子字符串的字符(在这种情况下为空)。完成此操作后,将连接其余未更改的字符串。
【解决方案4】:

你可以使用

substr(string $string, int $start, int[optional] $length=null);

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

【讨论】:

  • 抱歉,这不是@ashleedawg 给出的相同答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 2011-01-19
  • 2015-08-22
相关资源
最近更新 更多