【问题标题】:Split a string and remove the first element in string拆分字符串并删除字符串中的第一个元素
【发布时间】:2021-10-22 06:28:24
【问题描述】:
 Original string                  '4.0.0-4.0-M-672092'
 

如何使用一行代码将原始字符串修改为“4.0-M-672092”。 非常感谢任何帮助。

感谢和问候

【问题讨论】:

  • 请在此处解释您要遵循的规则。您是否只想在每种情况下删除前 5 个字符,您可以通过说 mystring[0..4]='' 来做到这一点?或者删除直到第一个'-'的所有内容? mystring.split('-').shift.join('-')?还是这里有其他逻辑/要求?

标签: ruby ruby-on-rails-4 split


【解决方案1】:

'split' 方法在这种情况下有效

https://apidock.com/ruby/String/split

'4.0.0-4.0-M-672092'.split('-')[1..-1].join('-')

# => "4.0-M-672092"

请注意,在这个应用程序中很好,但在长文本中,这可能会变得未优化,因为它会拆分所有字符串,然后重新加入数组


如果您需要在更宽的文本中对此进行更优化,您可以找到“-”索引(这是您的拆分)并使用下一个位置来制作子字符串

text = '4.0.0-4.0-M-672092'
text[(text.index('-') + 1)..-1]

# => "4.0-M-672092"

但你不能在一行中完成,找不到分割字符会导致错误,所以如果可能发生这种情况,请使用救援语句

【讨论】:

    【解决方案2】:

    最简单的方法:

    '4.0.0-4.0-M-672092'.split('-', 2).second

    【讨论】:

      【解决方案3】:
      "4.0.0-4.0-M-672092"[/(?<=-).*/]
        #=> "4.0-M-672092"
      

      正则表达式读取,“匹配零个或多个除换行符以外的字符,尽可能多 (.*),前提是匹配前面有一个连字符。(?&lt;=-) 是一个正向查找. 见String#[]

      【讨论】:

        猜你喜欢
        • 2021-07-17
        • 2022-11-22
        • 2012-11-27
        • 2016-02-12
        • 2015-07-25
        • 1970-01-01
        • 2020-07-01
        • 2022-01-19
        相关资源
        最近更新 更多