2010-11-25 35 views
1
string = 

" 
[title] 

{snippet} 

[something else in bracket] 

{something else} 

more text 

#tags 
" 

我想刪除的[]第一次出現的字符串第一次出現{}從給定的字符

s.clean_method或正則表達式刪除應該返回字符串像

" 
title 

snippet 

[something else in bracket] 

{something else} 

more text 

#tags 
" 

語言Ruby 1.9的0.2

回答

1

更多相同的:

s = "[asd]{asd}[asd]{asd}" 
%w({ } [ ]).each{|char| s.sub!(char,'')} 
#=> "asdasd[asd]{asd}" 
0

好吧,如果這就是你想要做的,所有你需要做的是

result = string.sub('{', '').sub('[', '').sub('}', '').sub(']', '') 

當然,這是一個非常不雅的解決方案,並且不考慮的事情一樣無與倫比的支架等

更好的解決方案很可能是:

pattern1 = /\{(.*?)\}/ 
pattern2 = /\[(.*?)\]/ 
match1 = pattern1.match(string) 
result = string.sub(match1[0], match1[1]) 
match2 = pattern2.match(result) 
result = result.sub(match2[0], match2[1]) 

這或許可以被簡化,但是這什麼來把我的頭:)頂部

順便說一句,如果你要替換所有實例,所有你需要做的是使用gsub代替sub

4

你需要String#sub(不GSUB):

irb> "[asd]{asd}[asd]{asd}".sub(/\[(.+?)\]/,'\1').sub(/\{(.+?)\}/,'\1') 
=> "asdasd[asd]{asd}" 
相關問題