【问题标题】:How to remove numbers from a string with RegEx如何使用正则表达式从字符串中删除数字
【发布时间】:2011-03-22 17:42:13
【问题描述】:

我有一个这样的字符串:

" 23 PM"

我想删除23,所以我只剩下PM 或(空格被截断)只是PM

有什么建议吗?

需要在 PHP 中

【问题讨论】:

  • 我会仔细阅读每个答案并选择最适合您需求的解决方案。有许多不同的答案,结果有些被不必要地否决了。

标签: php regex string


【解决方案1】:
echo trim(str_replace(range(0,9),'',' 23 PM'));

【讨论】:

    【解决方案2】:

    可以使用ltrim

    ltrim(' 23 PM', ' 0123456789');
    

    这将删除字符串左侧的任何数字和空格。如果双方都需要,可以使用trim。如果您需要它的右侧,您可以使用rtrim

    【讨论】:

    • 这就是我要找的
    【解决方案3】:
    preg_replace("/[0-9]/", "", $string);

    【讨论】:

    • 即使这会匹配所有数字,我想括号后面的星号会更快,就像我的回答一样。
    • 使用星号与不使用星号不会对速度产生太大影响...即使那样,您仍然在谈论小数点后有 4 个零的时间值(0.00001 秒或所以),所以除非你在一个循环(一个大循环)中这样做,否则尝试优化这样的语句是没有意义的......
    • 空间删除不是主要观点。但这也很容易做到。只需将空格放在括号中:[0-9]
    【解决方案4】:

    也可以使用 str_replace,这通常是 RegEx 的更快替代方案。

    str_replace(array(1,2,3,4,5,6,7,8,9,0,' '),'', ' 23 PM');
    // or
    str_replace(str_split(' 0123456789'), '', ' 23 PM');
    

    它将替换任何数字 0-9 和字符串中的空格,无论位置如何。

    【讨论】:

      【解决方案5】:

      如果您只想要字符串的最后两个字符,请使用带有负数开头的substr

      $pm = substr("  23 PM", -2); // -> "PM"
      

      【讨论】:

      • 赞成这一点是为了补偿不合理的反对票,也因为 OP 不清楚他期望的字符串,而 Andy 明确说明了上面的代码做了什么。
      【解决方案6】:
      $str = preg_replace("/^[0-9 ]+/", "", $str);
      

      【讨论】:

      • 这就是说,数字必须在左侧,并且必须至少有一个数字。这适合他提供的示例,但通常这种解决方案不起作用。像“AM 23423NNfB”这样的字符串呢?您无法使用正则表达式删除数字。
      • 它回答了op的请求,他没有说PM之后有什么。
      • 他说。 “我有一个字符串 LIKE....”主题的标题一般说:从字符串中删除空格。所以我理解“任何字符串”。
      【解决方案7】:

      正则表达式

      preg_replace('#[0-9 ]*#', '', $string);
      

      【讨论】:

        【解决方案8】:

        您还可以使用以下内容:

        preg_replace('/\d/', '',' 23 PM' );
        

        【讨论】:

          【解决方案9】:

          trim() 将允许使用点语法在“字符掩码”参数中包含一系列字符。

          代码:(Demo)

          //              v--------literal spaces
          trim(" 23 PM", ' 0..9')
          //               ^^^^----all digits
          // output: PM
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-03
            • 1970-01-01
            • 2021-09-07
            • 1970-01-01
            • 2013-05-23
            相关资源
            最近更新 更多