3
mystring = "svn-myapplication" or mystring = "git-myapplication"

我想要的输出:

mystring = "myapplications(svn)"
mystring = "myapplication(git)"

问题:字符串的前 3 个字符应移至最后一个带括号的字符,并且应删除“-”。

我试图做这样的事情:

mystring.gsub('svn-','')+"(svn)"但 svn 可能是 git,所以我想使用前三个字符移动到以“-”结尾并用括号括起来

4

6 回答 6

9

带有组的正则表达式会很好用:

mystring.gsub(/^([a-z]+)-(\w+)/, '\2(\1)')

于 2013-04-05T11:09:36.750 回答
5

您可以使用 e 正则表达式,但最简单的解决方案如下

mystring = "svn-myapplication" 
puts "#{mystring[4..-1]}(#{mystring[0..2]})"

myapplication(svn)
于 2013-04-05T11:09:04.903 回答
5

让摇滚吧:)

mystring = "svn-myapplication"
mystring.split('-').rotate.join('(') + ')'
于 2013-04-05T11:13:35.967 回答
3

您可以为此使用[]Ruby 的 String 类的方法

mystring = "svn-myapplication"
mystring = "#{mystring[4..-1]}(#{mystring[0,3]})"
于 2013-04-05T11:05:02.797 回答
2

你可以在 irb 中尝试这样的事情

1.9.3-p362 :001 > mystring = "svn-myapplication"

1.9.3-p362 :002 > mystring.gsub(mystring[0,3]+'-','')+(mystring[0,3])
于 2013-04-05T11:05:45.447 回答
1

我打算提交这个,但至少我可以看到如何做得更好!

def test(s = '')
  match = /\w+-/.match(s).to_s
  match = match[0..-2]
  s.gsub!(/\w+-/, '')
  s << "(#{match})"
end # of test
于 2013-04-05T11:17:43.723 回答