-1

我希望删除一系列名称中的所有中间首字母。我发现我可以用 Python 做到这一点,所以我想我会在 Rruby 中尝试它。在 Python 中,我可以使用 endswith 命令删除csv 文件中的所有中间首字母,因为它们是唯一以“。”结尾的项目。

例子

steve A. walkins

michael todd

Angel, Blair C.

并非所有名称都遵循固定模式,但所有中间名首字母都遵循。因此,为了自学一些红宝石,试图找出我可以在 python 中完成的功能的等效命令和用法。

我的示例 Python 代码适用于此。

 print ' '.join(i for i in name.split(' ') if not i.endswith('.'))
4

2 回答 2

3

不要假装我的答案比 Ivaylo Strandjev 建议的要好,但如果你想要一个将你的 python 代码“翻译”为 ruby​​ 的 oneliner:

name.split.select{|t| !t.end_with?('.')}.join(' ')

或者,更清晰(感谢@ŁukaszNiemier)

name.split.reject{|t| t.end_with?('.')}.join(' ')
于 2013-02-10T10:42:43.460 回答
0

在 ruby​​ 中有一个方法end_with?

这是一些示例 ruby​​ 代码来执行您想要的操作:

def remove_initial name
   names = name.split
   names.select{|t| !t.end_with?(".")}.inject{|a,b| a + " " + b}
end

和一个简短的解释:

第一行name.split使用默认的空格分隔符简单地拆分名称。

names.select{|t| !t.end_with?(".")}将仅过滤不以 a 结尾的名称,.然后inject{|a,b| a + " " + b}将累积剩余的名称,并在它们之间添加一个空白。

于 2013-02-10T09:45:56.623 回答