是否可以加入字符串数组并在所有元素上插入分隔符?
例如:
%w[you me].join(" hi-") => "you hi-me" # expected "hi-you hi-me"
你不能split
一个数组。你可以split
文件和字符串。
如果您正在谈论拆分字符串:
'now-is-the-time'.split(/-/) # => ["now", "is", "the", "time"]
使用捕获分隔符/分隔符的模式将在结果中返回分隔符:
'now-is-the-time'.split(/(-)/) # => ["now", "-", "is", "-", "the", "-", "time"]
对不起,我糊涂了。我想将一个数组加入一个字符串。
您不能有选择地加入,但可以在数组中的元素之间插入文本:
%w[foo bar].join(' he-') # => "foo he-bar"
您可以在“加入”文本之前添加:
ary = %w[foo bar foo bar]
join_text = ' he-'
join_text + ary.join(join_text) # => " he-foo he-bar he-foo he-bar"
看起来你需要的是这样的:
%w[you me].map {|s| s != "hi" ? "hi-#{s}": s }.join(' ') => "hi-you hi-me"
%w[hi you me].map {|s| s != "hi" ? "hi-#{s}": s }.join(' ') => "hi hi-you hi-me"
编辑:
现在你已经改变了你的问题,这个测试不再有用了。
这将做:
%w[you me].map {|s| "hi-#{s}" }.join(' ') => "hi-you hi-me"
拉姆达版本:
ary = %w[foo bar foo bar]
add_text = ->x{' he-'+x}
p ary.map(&add_text).join #=> " he-foo he-bar he-foo he-bar"