2013-04-05 36 views
3
mystring = "svn-myapplication" or mystring = "git-myapplication" 

我所需的輸出:紅寶石字符串處理,除去前3個字符,並把它們添加到字符串的末尾

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

問題:字符串的前3個字符應被移動到最後加上括號和「 - 」應該刪除。

我試圖做這樣的事情:

mystring.gsub('svn-','')+"(svn)"但SVN可能是Git的,所以我想用被移動到結束與前三個字符「 - 」刪除和括號括起來

回答

9

與A組正則表達式將工作做好:

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

2

你可以嘗試這樣的事情在IRB

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

1.9.3-p362 :002 > mystring.gsub(mystring[0,3]+'-','')+(mystring[0,3]) 
4

你可以利用電子正則表達式,但最簡單的解決方案如下

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

myapplication(svn) 
+0

迄今爲止最快的解決方案。 – 2013-04-05 11:14:39

+0

@MikeCampbell,爲什麼'mystring [0..2]'比'mystring [0,3]'快得多? – Mischa 2013-04-05 11:25:50

+0

我的解決方案中有哪些gsub?我們的答案基本上是一樣的...... – Mischa 2013-04-05 11:29:28

4

讓rock'n'roll :)

mystring = "svn-myapplication" 
mystring.split('-').rotate.join('(') + ')' 
1

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

def test(s = '') 
    match = /\w+-/.match(s).to_s 
    match = match[0..-2] 
    s.gsub!(/\w+-/, '') 
    s << "(#{match})" 
end # of test