最后拆分和修改

时间:2013-07-09 22:28:05

标签: ruby string

我有一个字符串“shared / errors”,我希望将“error”这个词加上下划线,以便实现“shared / _errors”这样做有一些红宝石魔法吗?

4 个答案:

答案 0 :(得分:2)

假设字符串中只有一个斜杠,那么所有必要的是

string.sub!(%r|(?<=/)|, '_')

或者,如果您愿意,

string.sub!('/', '/_')

如果字符串中有多个斜杠,而您只想影响最后一个斜杠,则需要

string.sub!(%r|(?=[^/]*\z)|, '_')

答案 1 :(得分:1)

如果您只想在最后一次出现正斜杠时执行此操作,则可以在斜杠的索引处插入下划线:

string.insert(string.rindex('/') + 1, '_')

答案 2 :(得分:1)

也许所有答案在这里都有效,但我确实看到OP通过名称引用'错误'。而不是斜线。

string.gsub!('error', '_error')应该更改原始字符串,并对字符串中可能发生的所有事件进行更改。当然,我觉得斜线很重要,所以也许更正确string.gsub!('/error', '/_error')会更好。

答案 3 :(得分:0)

为什么不

path = 'shared/errors' # or whatever it is
dir, file = path.match(/^(.*\/)([^/]*)$/).captures
path = dir + "_" + file

这将得到字符串的两部分:

shared/errors ==> shared/ + errors

然后将它们拼凑在一起以形成所需的字符串。