1

「shared/errors」という文字列があり、「error」という単語の先頭にアンダースコアを追加して、「shared/_errors」を実現したいのですが、これを行うためのルビーの魔法はありますか?

4

4 に答える 4

2

文字列にスラッシュが 1 つしかないと仮定すると、必要なのは次のとおりです。

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

または、必要に応じて、

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

文字列に複数のスラッシュがあり、最後のスラッシュのみに影響を与えたい場合は、

string.sub!(%r|(?=[^/]*\z)|, '_')
于 2013-07-09T22:45:11.877 に答える
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

これにより、文字列の 2 つの部分が取得されます。

shared/errors ==> shared/ + errors

そして、それらをつなぎ合わせて、目的のストリングを形成します。

于 2013-07-09T22:35:25.360 に答える