我有一个字符串“shared / errors”,我希望将“error”这个词加上下划线,以便实现“shared / _errors”这样做有一些红宝石魔法吗?
答案 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
然后将它们拼凑在一起以形成所需的字符串。