[英]Remove trailing delimiting character from a delimited string
從字符串中刪除最后一個字符的最快方法是什么?
我有一個像
a,b,c,d,e,
我想刪除最后一個 ',' 並取回剩余的字符串:
OUTPUT: a,b,c,d,e
最快的方法是什么?
與提出的問題相反, rtrim()
將從字符串末尾刪除第二個參數中列出的任意數量的字符。 如果您只需要一個逗號,則可以使用以下代碼:
$newarraynama = rtrim($arraynama, ",");
但就我而言,我有 2 個字符,一個逗號和一個空格,所以我不得不改為
$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,,,
, a, b, c, d, e,
或a, b, c, d, e , ,, , ,
但是,如果可能有多個逗號,但您只需要刪除最后一個逗號,則根本不應該使用rtrim()
- 請參閱其他答案以獲取直接回答問題的解決方案。
但是,如果您不知道是否存在額外字符, rtrim()
可能是一個不錯的選擇。 與基於substr
的解決方案不同,它將從 a, b, c, d, e 返回a, b, c, d, e
a, b, c, d, e
作為函數的substr
的替代方法如下:
substr_replace($string, "", -1)
它是最快的嗎? 我不知道,但我願意打賭這些替代方案都非常快,以至於沒關系。
請注意,此函數不是多字節安全的,如果最后一個字符恰好是多字節字符,則會產生不希望的結果。
您可以使用
substr(string $string, int $start, int[optional] $length=null);
請參閱 PHP 文檔中的substr 。 它返回字符串的一部分。
使用字符串錨“$”的正則表達式結尾
$string = preg_replace("/,$/", '', $string);
如果你真的想替換最后一個字符:
$string = "a,b,c,d,e,";
$string[strlen($string)-1] = "";
echo $string; //output: a,b,c,d,e
“最快最好的代碼是不存在的代碼”。
說到邊緣情況,循環后出現的尾隨逗號有一個很常見的問題,比如
$str = '';
foreach ($array as $value) {
$str .= "$value,";
}
我想,最初的問題也可能是這種情況。 在這種情況下,最快的方法肯定是根本不添加尾隨逗號:
$str = '';
foreach ($array as $value) {
$str .= $str ? "," : "";
$str .= $value;
}
在這里,我們正在檢查 $str 是否已經有任何值,如果是,則在下一項之前添加一個逗號,因此結果中沒有多余的逗號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.