2015-07-13 28 views
1

我有這樣的字符串,我建立使用的各種功能的每個返回字符串輸出卸下「\ n」個:從字符串取決於某些情況下

[resource_name, 
duration, 
project_name, 
total_hours, 
details, 
booker, 
user_details].join("\n") 

每個函數返回的信息的字符串,其作爲一個整體,建立一個通知消息。我努力實現的是每個字符串都由一個新的行字符連接,但有時這些函數會返回一個空字符串,因爲沒有指定信息。例如,如果沒有指定project_name,則字符串將爲空。

如何讓整行被刪除,而不是有一個空字符串後跟一個換行符?,因爲這看起來不像樣。

回答

2

您可能會嘗試在執行join之前準備陣列。請考慮下面的代碼:

[resource_name, 
duration, 
project_name, 
total_hours, 
details, 
booker, 
user_details].compact 
    .reject { |s| s.empty? } 
    .join("\n") 

在這裏,我用compact方法,從數組中刪除所有nil元素(如果你確定沒有nil的100%,則可以省略一個)。下一步是刪除或者全部empty?字符串(請注意,empty?string上的方法)。

祝你好運!

+1

因爲這是一個基本的ruby問題,您可能只想指出'.reject(&:empty?)'是糖的一般形式'.reject {| s | s.empty? }' – xkickflip

+1

這很好,@xkickflip。將更新ansewer –

+0

它的工作!太感謝了!! – NdaJunior

相關問題