【问题标题】:Splitting strings and re-ordering in ruby拆分字符串并在 ruby​​ 中重新排序
【发布时间】:2018-08-14 22:35:34
【问题描述】:

我正在尝试重新排列包含全名的字符串,以便第二个名称显示在第一个名称之前。

我已经设法使用下面的代码拆分字符串,但是当我构建它时,它似乎以数组格式返回 ["second name", "first name"] 而不是字符串 "second name, "first name ”。

任何帮助表示赞赏!

def name_shuffler(str)
   name_parts = str.split(" ")
   first_name, last_name = name_parts[1], name_parts[0]
end

【问题讨论】:

  • 方法末尾的 name_parts.join(" ")` 应该可以工作。
  • 完成 - 这解决了后一个问题,但名称不再是相反的顺序?
  • 那是因为name_parts的顺序还是一样的;你只在" "上拆分它,所以如果你再次在" "上加入它,你会得到原始字符串(任何连续的空格都折叠成一个)。
  • 啊,也许name_parts.reverse.join(' ') 可以。

标签: arrays ruby string split


【解决方案1】:

你可以加入这两个部分:

def name_shuffler(str)
    name_parts = str.split(" ")
    [name_parts[1], name_parts[0]].join(" ")
end

name_shuffler "one two" # => "two one"

尽管您将要考虑处理不带空格或名称部分多于两个的输入。

【讨论】:

    【解决方案2】:

    一种正则表达式方式。

    "John Smith".gsub(/(\w+) (\w+)/,'\2 \1') #=> "Smith John"
    

    一种旋转方式。

    "John Smith".split(' ').rotate.join(' ') #=> "Smith John"
    

    【讨论】:

      【解决方案3】:
      def name_shuffler(str)
        str.split(" ").reverse.join(" ")
      end
      
      name_shuffler("John Doe") #=> "Doe John"
      

      【讨论】:

      • 你应该对你的答案提供一些解释。
      猜你喜欢
      • 2022-01-13
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多