在Ruby(或Rails)中,是否有一种优雅的方法来去除某些前导和尾随字符?[副本]

pprl5pva  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(88)

此问题已在此处有答案

Ruby string strip defined characters(7个回答)
上个月关门了。
社区上个月审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
我有一个字符串,可能有一个前导或尾随连字符。我想把那些拿掉。
我的第一个想法是使用strip,它将从两端删除一个或多个空格字符。但令人惊讶的是,它拒绝剥离任何其他东西:

[3] pry(main)> "-thi-ng-".strip "-"
ArgumentError: wrong number of arguments (given 1, expected 0)

Ruby或Rails是否有一种优雅的方式来表达这一点?

0ve6wy6x

0ve6wy6x1#

Ruby

>> "---thi-ng---".gsub(/^-+|-+$/, "")
=> "thi-ng"

轨道

>> "---thi-ng---".remove(/^-+/, /-+$/)
=> "thi-ng"
hc2pp10m

hc2pp10m2#

我能找到的最好的答案是用两个相当长的名字链接两个方法:

"-thi-ng-".delete_prefix("-").delete_suffix("-")
=> "thi-ng"

请注意,它并不像strip那样处理重复字符:

"-thi-ng--".delete_prefix("-").delete_suffix("-")
=> "thi-ng-"
w7t8yxp5

w7t8yxp53#

另一种选择是使用gsub和regexg:

LEADING_OR_TRAILING_HYPEN_REGEXP = /^\-|\-$/

"-thi-ng-".gsub(LEADING_OR_TRAILING_HYPEN_REGEXP, '')
#=> "thi-ng"

相关问题