1

I have a string “shared/errors”, and I’d like for the the word “error” to be prepended with an underscore, so as to achieve “shared/_errors” Is there some ruby magic for doing this?

4

4 回答 4

2

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

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

或者,如果您愿意,

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

如果字符串中有多个斜杠并且您只想影响最后一个,那么您想要

string.sub!(%r|(?=[^/]*\z)|, '_')
于 2013-07-09T22:45:11.877 回答
1

也许所有答案在这里都是有效的,但我确实看到 OP 按名称引用了“错误”。而不是斜线。

string.gsub!('error', '_error')应该更改原始字符串,并针对字符串中可能发生的所有情况执行此操作。当然,我感觉斜线很重要,所以也许越正确string.gsub!('/error', '/_error')会越好。

于 2013-07-09T23:20:17.320 回答
1

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

string.insert(string.rindex('/') + 1, '_')
于 2013-07-09T22:40:20.830 回答
0

为什么不

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

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

shared/errors ==> shared/ + errors

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

于 2013-07-09T22:35:25.360 回答