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?
问问题
66 次
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 回答