使用Ruby连接数组并在字符串中保留分隔符

时间:2013-11-06 16:59:30

标签: ruby arrays split

是否可以连接字符串数组并在所有元素上插入分隔符?

例如:

%w[you me].join(" hi-") => "you hi-me" # expected "hi-you hi-me"

3 个答案:

答案 0 :(得分:1)

你不能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"

答案 1 :(得分:1)

看起来你需要的是:

%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"

答案 2 :(得分:1)

Lambda版本:

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"