Ruby - 字符串操作

时间:2012-04-07 16:33:40

标签: ruby string

我有这个简单的帮手:

def printe_result(data)
  a_var = ('<a href="http://'+data.a_value+'>A</a>' unless (data.a_value.nil? || data.a_value.empty?))
  b_var = ('<a href="http://'+data.b_value+'>B</a>' unless (data.b_value.nil? || data.b_value.empty?))
  c_var = ('<a href="http://'+data.c_value+'>C</a>' unless (data.c_value.nil? || data.c_value.empty?))

  return ...
end

a_valueb_valuec_value我从数据库中获取。如果值是字符串,我想将它们保存到相应的变量中,然后所有变量返回为一个字符串,其值以逗号分隔,例如:

"<a href=http://a>A</a>, <a href=http://b>B</a>, <a href=http://c>C</a>"

如果变量存在,我怎样才能合并?

3 个答案:

答案 0 :(得分:4)

def printe_result(data)
  { 'A' => data.a_value, 'B' => data.b_value, 'C' => data.c_value }.map do |name, val|
    "<a href='http://#{val}'>#{name}</a>" unless val.blank?
  end.compact.join(',')
end

答案 1 :(得分:2)

这样的东西
 [[a_value,'A'],[b_value,'B'],[c_value,'C']].select {|(value, label)| !value.blank?}.
    map {|(value, label)| %q[<a href="http://#{value}">#{label}</a>]}.join(',')

应该做的诀窍:使用select消除带有空白标签的对,map将标签转换为所需的文本并加入以将字符串连接在一起。

答案 2 :(得分:0)

我希望我的问题正确 - 您可以使用defined?(variable_name)方法检查是否已定义变量。

我希望这有帮助!