【问题标题】:Remove all exclamation marks from the end of sentence去掉句末所有的感叹号
【发布时间】:2022-01-28 18:15:57
【问题描述】:

我需要几行代码来删除从句子末尾开始的所有感叹号(“!”)。代码应实现如下:

"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"

我尝试过使用 RegEx(负前瞻),但是没有成功:

/(?!^)!/g

非常感谢您对解决方案的简短说明。谢谢!

【问题讨论】:

    标签: regex string


    【解决方案1】:

    您不需要前瞻。只需匹配末尾的感叹号并用空字符串替换它们。在 PHP 中是:

    $string = preg_replace('/!+$/', '', $string);
    

    【讨论】:

      【解决方案2】:

      您应该使用$ 锚点,它标记了字符串的结尾:

      /!+$/gm
      

      m 标志存在,以防你有一个多行字符串。

      【讨论】:

        【解决方案3】:

        我正在为您提供我在 javascript 中实现的解决方案。我不知道您使用的是哪种语言,但无论如何逻辑保持不变。

        var text = "!Hi! Hi!!";
        var i=text.length - 1;
        while(text[i] == "!"){
           i--;
        }
        finalText = text.substring(0,i+1);
        console.log(finalText);
        
        Output: !Hi! Hi
        

        您可以使用相同的逻辑在您正在使用的编程语言中实现。如果您想使用正则表达式,那么上面@Barmar 提到的解决方案将完美运行!

        【讨论】:

          【解决方案4】:
          def remove(s):
              return s[:-1] if s.endswith('!') else s
          

          应该不错

          【讨论】:

          • 这只会删除最后一个!在字符串中,它不考虑是否有多个 !!在字符串的末尾。
          猜你喜欢
          • 1970-01-01
          • 2023-03-14
          • 2021-01-03
          • 1970-01-01
          • 2015-04-30
          • 1970-01-01
          • 1970-01-01
          • 2017-02-08
          • 2012-03-18
          相关资源
          最近更新 更多