You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅当字符串末尾为"s"时删除其最后一个字符?

解决方案:只删除字符串末尾的"s"

嘿,你遇到的问题核心是没精准定位到整个字符串的末尾,之前的方法要么太粗暴(直接删最后一个字符),要么范围太广(删所有单词末尾的s),给你两个靠谱的方案:

方案1:使用正则表达式精准匹配末尾的"s"

用preg_replace的时候加上字符串结束锚点$,这样只会匹配整个字符串最后一个字符是"s"的情况,不会碰中间的单词:

$originalStr = "Sealless Tools";
$modifiedStr = preg_replace('/s$/', '', $originalStr);
// 输出结果:"Sealless Tool"

$str2 = "strap";
$modifiedStr2 = preg_replace('/s$/', '', $str2);
// 输出结果:"strap"(因为最后一个字符是p,不会替换)

这里的/s$/意思是:匹配字符串结尾位置的"s",完美符合你的需求。

方案2:纯字符串函数判断(无正则)

如果你不想用正则,也可以用字符串截取函数先判断最后一个字符,再决定是否删除:

$str = "tests";
if (substr($str, -1) === 's') {
    $str = substr($str, 0, -1);
}
// 结果:"test"

$str3 = "strap";
if (substr($str3, -1) === 's') {
    $str3 = substr($str3, 0, -1);
}
// 结果:"strap"(无变化)

substr($str, -1)会取出字符串的最后一个字符,判断等于"s"后,再用substr($str, 0, -1)截取从开头到倒数第二个字符的内容,完全可控。

之前你用substr直接删最后一个字符是因为没做判断,而之前的preg_replace应该是没加$锚点,导致匹配了所有位置的"s"(或者单词末尾的"s"),现在用这两种方法就可以精准实现需求啦~

内容的提问来源于stack exchange,提问作者KDJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:18:07