从字符串中删除第一次出现的给定字符

时间:2010-11-25 10:08:57

标签: ruby regex string

string =

"
[title]

{snippet}

[something else in bracket]

{something else}

more text 

#tags
"

我想删除第一次出现的[]和{}

s.clean_method或regexp应该像那样返回字符串

"
title

snippet

[something else in bracket]

{something else}

more text 

#tags
"

语言Ruby 1.9.2

3 个答案:

答案 0 :(得分:4)

您需要String#sub(而不是gsub):

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

答案 1 :(得分:1)

更多相同:

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

答案 2 :(得分: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

相关问题