1

私が持っているもの

"path1/path2/path3"

私が欲しいもの

"my_namespace:path1/my_namespace:path2/my_namespace:path3"

そして私はしました:

a = "path1/path2/path3"
b = a.split("/").map{ |item| "my_namespace:"+ item}
puts b.join("/")

もちろん、それは機能します。しかし、それを行うための他のより良い方法があるかどうかに興味があります。

4

3 に答える 3

2
a.gsub(/(?<=^|\/)/, "my_namespace:")
# => "my_namespace:path1/my_namespace:path2/my_namespace:path3"
于 2012-11-10T12:44:56.963 に答える
1

の良いユースケースのようですString#gsub

a = "path1/path2/path3".gsub(%r{[^/]+/?}) { |m| "mynamespace:#{m}" }
p a #=> "mynamespace:path1/mynamespace:path2/mynamespace:path3"
于 2012-11-10T12:36:56.627 に答える
0

たぶん、あなたはあなたのパスのために異なる名前空間を意味しました。もしそうなら、あなたはzipを使用することができます

"path1/path2/path3".split('/').zip(['namespace1','namespace2','namespace3']).
  map { |p,n| n + ':' + p }.join('/')

=> "namespace1:path1/namespace2:path2/namespace3:path3"
于 2012-11-10T12:43:04.130 に答える