2013-02-10 91 views
-1

我期待刪除一系列名稱中的所有中間首字母。我發現我可以用Python做到這一點,所以我想在Ruby中嘗試它。在Python中,我可以使用endswith命令刪除csv文件中的所有中間首字母,因爲它們是以'。'結尾的唯一項目。Ruby刪除以'。'結尾的單詞

例如

steve A. walkins 

michael todd 

Angel, Blair C. 

並非所有的名字如法炮製,但所有的中間名首字母做。所以要教我自己一些ruby試圖找出equivilent命令和使用的結束功能,我可以在Python中做。

我爲此工作的示例Python代碼是。

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

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-end_with-3F – 2013-02-10 09:47:44

+4

當問問題,請花一點時間校對你的問題並設置正確的評估和標記。這使其他人更容易理解和回答。 – berkes 2013-02-10 10:01:13

回答

3

不要假裝我的回答是不是一個由Ivaylo Strandjev提出更好的,但如果你想有一個oneliner這是你的Python代碼「翻譯」紅寶石:

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

,或者更清楚(感謝@ŁukaszNiemier)

name.split.reject{|t| t.end_with?('.')}.join(' ') 
+1

+1其實你的答案**是**更好:)我喜歡使用'join'而不是我難看的'inject'。 – 2013-02-10 10:49:49

+0

謝謝,@ŁukaszNiemier。更新。 – mudasobwa 2013-02-10 11:05:43

+0

謝謝,這讓我的腳本非常感謝你們! – 2013-02-11 04:58:04

0

紅寶石有一種方法end_with?

下面是一些例子Ruby代碼做你想要什麼:

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

和短exaplanation:

第一行name.split簡單地分割使用默認的空格分隔的名字。

names.select{|t| !t.end_with?(".")}將只篩選不以.結尾的名稱,然後inject{|a,b| a + " " + b}將累加其餘名稱,並在它們之間添加單個白色空間。

相關問題