【问题标题】:Ruby: how to add separator character to the last? [duplicate]Ruby:如何在最后添加分隔符? [复制]
【发布时间】:2014-04-22 19:18:39
【问题描述】:

例子,

> arr = ['a', 'b', 'c']
> arr.join('-')
=> "a-b-c"

是否有任何功能可以在最后一个分隔符上附加一个分隔符?

> arr.func('-')
=> "a-b-c-"

谢谢。

【问题讨论】:

  • 你可以在字符串 arr.join("-")+"-" 的末尾追加它
  • @user944938, arr.join('-') << '-' 避免创建临时字符串。
  • arr * '-' << '-' :)
  • @fl00r,你知道arr * '-'arr.join('-') 的糖还是等价物?
  • @CarySwoveland,等效(别名)ruby-doc.org/core-2.1.1/Array.html#method-i-2A

标签: ruby


【解决方案1】:

不,没有这样的单一功能。你可以像这样破解它:

arr.push('').join('-')

如果您不想更改原始数组。复制它:

arr.dup.push('').join('-')

【讨论】:

  • 这实际上改变了数组,我相信(arr + '').join('-')会更好
  • @UriAgassi 您无法将字符串添加到数组中。但是您可以将数组添加到数组arr + ['']
  • @fl00r - 你是对的 - 我的错..
  • @sawa,在某些情况下,数组飞溅可能会给堆栈带来问题;)
【解决方案2】:

在这种情况下,您实际上并不需要 join,而是需要 reduce(通常由其别名 inject 引用):

arr.reduce('') { |concat, entry| concat + entry + '-' }

当然,还有很多其他的方法可以完成这项工作,但拼出它不太聪明,因此当你稍后再看它时更容易弄清楚(或者其他人必须努力) )。

【讨论】:

  • 我喜欢你的解决方案,但arr.join('-') << '-' 并不难理解。 :-)
【解决方案3】:

另一种方式(只是说):

arr.join.gsub(/./) { |c| c + '-' }

还是喜欢

arr.join('-') << '-'

最简单的原因。

【讨论】:

    【解决方案4】:

    修改数组。

    arr.map{|c| c.concat("-")}.join
    

    【讨论】:

      猜你喜欢
      • 2016-04-04
      • 2013-11-01
      • 1970-01-01
      • 2021-01-04
      • 2015-12-08
      • 2012-04-02
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多