从给定的字符
问题描述:
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
答
更多相同的:
s = "[asd]{asd}[asd]{asd}"
%w({ } [ ]).each{|char| s.sub!(char,'')}
#=> "asdasd[asd]{asd}"
答
好吧,如果这就是你想要做的,所有你需要做的是
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
答
你需要String#sub
(不GSUB):
irb> "[asd]{asd}[asd]{asd}".sub(/\[(.+?)\]/,'\1').sub(/\{(.+?)\}/,'\1')
=> "asdasd[asd]{asd}"