代码之家  ›  专栏  ›  技术社区  ›  streetparade

在php中如何用“”替换最后一个“s”

  •  10
  • streetparade  · 技术社区  · 15 年前

    我需要知道如何用“”替换字符串中的最后一个“s”

    假设我有一根绳子 测试员 输出应该是 测试器 . 它应该只替换最后一个“s”,而不是字符串中的每个“s” 在php中如何做到这一点?

    5 回复  |  直到 15 年前
        1
  •  21
  •   zerkms    15 年前
    if (substr($str, -1) == 's')
    {
        $str = substr($str, 0, -1);
    }
    
        2
  •  15
  •   Community CDub    8 年前

    更新: 也可以不使用正则表达式 strrpos ANS substr_replace :

    $str = "A sentence with 'Testers' in it";
    echo substr_replace($str,'', strrpos($str, 's'), 1);
    // Ouputs: A sentence with 'Tester' in it
    

    斯特罗斯 返回字符串最后一个匹配项的索引 替换 替换从某个位置开始的字符串。

    (与 Gordon 就像我刚刚注意到的。)


    到目前为止,所有答案都去掉了单词的最后一个字符。但是如果您真的想替换 最后一次出现 对于一个角色,你可以使用 preg_replace 用一个 negative lookahead :

    $s = "A sentence with 'Testers' in it";
    echo preg_replace("%s(?!.*s.*)%", "", $string );
    
    // Ouputs: A sentence with 'Tester' in it
    
        3
  •  5
  •   Dor    15 年前
    $result = rtrim($str, 's');
    $result = str_pad($result, strlen($str) - 1, 's');
    

    rtrim()

        4
  •  5
  •   Gordon Haim Evgi    15 年前

    您的问题有点不清楚是否要删除 s 从字符串结尾或最后出现的 S 在绳子里。这是不同的。如果你想要第一个,使用Zerkms提供的解决方案。

    此函数删除 最后一次发生 属于 $char $string ,无论它在字符串中的位置如何,或者返回整个字符串,而$char不出现在字符串中。

    function removeLastOccurenceOfChar($char, $string)
    {
        if( ($pos = strrpos($string, $char)) !== FALSE) {
            return substr_replace($string, '', $pos, 1);
        }
        return $string;
    }
    echo removeLastOccurenceOfChar('s', "the world's greatest");
    // gives "the world's greatet"
    

    如果你的意图是改变词形,例如单数/复数,那么 have a look at this simple inflector class 知道该走哪条路。

        5
  •  2
  •   Leo    15 年前
    $str = preg_replace("/s$/i","",rtrim($str));