【问题标题】:Remove prefix from string in Groovy从 Groovy 中的字符串中删除前缀
【发布时间】:2016-12-30 05:27:42
【问题描述】:

如果它开始字符串,我需要从 Groovy 中的字符串中删除前缀(否则不执行任何操作)。

如果前缀是groovy:

  • groovyVersion 我期待Version
  • 对于groovy,我希望是空字符串
  • spock 我期待spock

现在我使用.minus(),但是当我这样做时

'library-groovy' - 'groovy'

然后我得到library- 而不是library-groovy

实现我想要的东西的绝妙方法是什么?

【问题讨论】:

    标签: string groovy substring prefix


    【解决方案1】:

    你应该使用正则表达式:

    assert 'Version  spock' == 'groovyVersion groovy spock'.replaceAll( /\bgroovy/, '' )
    

    【讨论】:

    • 正如方法名称所说,它将替换“所有”出现,而不仅仅是前缀。
    【解决方案2】:

    我对 Groovy 了解不多,但这是我对这个的看法:

    def reg = ~/^groovy/   //Match 'groovy' if it is at the beginning of the String
    String str = 'library-groovy' - reg
    
    println(str)
    

    【讨论】:

      【解决方案3】:

      这是区分大小写的,不使用正则表达式:

      ​def prefix = 'Groovy';
      def string = 'Groovy1234';
      def result = '';
      
      if (string.startsWith(prefix)) {
          result = string.substring(prefix.size())
          print result
      }
      

      【讨论】:

        【解决方案4】:

        此版本简单明了,但符合要求,是对您原来的增量更改:

        def trimGroovy = { 
            it.startsWith('groovy') ? it - 'groovy' : it
        }
        
        assert "Version" == trimGroovy("groovyVersion")
        assert "" == trimGroovy("groovy")
        assert "spock" == trimGroovy("spock")
        assert "library-groovy" == trimGroovy("library-groovy")
        

        【讨论】:

          【解决方案5】:

          解决方法:使用-运算符并剪断正确的字符串。

          def sentence = "remove_me_i_am_ok"
          def string_to_be_remove = "remove_me_"
          
          String result = sentence - string_to_be_remove
          print("output: ${result}")​
          
          /* output: i_am_ok */
          

          【讨论】:

          • 如果第一次出现在中间的某个地方,这也会删除给定的序列。
          • @AlexanderStohr 即使字符串位于序列的开头/中间/结尾,它应该可以工作,测试它。
          • 就我的理解而言,前缀意味着在字符串的开头 - 这就是这个词告诉我的。
          猜你喜欢
          • 2011-05-08
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-30
          • 2021-10-05
          • 2021-07-18
          相关资源
          最近更新 更多