根据某些情况从字符串中删除“\n”

Removing "\n" from a string depending on certain cases

我有这个字符串,我使用各种函数的输出构建了每个 return 字符串:

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

这些功能中的每一个 return 一串信息,作为一个整体,构建一条通知消息。我正在努力实现的是每个字符串都由一个换行符连接,但有时函数 return 是一个空字符串,因为未指定信息。例如,如果没有指定 project_name,则该字符串将为空。

如何让整行都被删除,而不是让一个空字符串后跟一个换行符?,因为那样看起来不太像。

您可以在执行 join 之前尝试 准备 阵列。考虑以下代码:

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

这里我使用了compact的方法,把数组中所有的nil元素都去掉了(如果你100%确定没有nil的,可以省略那个).下一步是删除或 reject 所有 empty? 字符串(请注意,empty?string 上的一种方法)。

祝你好运!