【问题标题】:Ruby: strings concated with "\n" returned in one lineRuby:在一行中返回带有“\ n”的字符串连接
【发布时间】:2017-03-21 11:40:55
【问题描述】:

我有这个代码:

def rectangle
  "|------------------|\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|                  |\n" +
  "|------------------|\n"
  end

我想重构它。但由于某种原因,如果我尝试以任何其他方式连接/合并字符串,"\n" 将停止工作,并在一行中返回。

def rectangle
    a = "|------------------|\n"
    b = "|                  |\n"
    a + b + a
end

我尝试过使用

System.getProperty("line.separator", "\n")

正如在类似帖子中所建议的那样,但这没有帮助(或者我做得不对)。这是我课程的一部分。感觉就像我错过了一些明显的东西。

【问题讨论】:

  • 通过inspect 显示时,字符串始终为一行。如果您打印它,它只是多行。你试过吗?不要忘记 Ruby 可以将字符串相乘:'-' * 10 比这里的更容易使用。
  • 如果我使用 print 那么它将返回 nil,我希望它返回一个由 - 和 | 组成的正方形听起来很傻
  • puts 和朋友返回nil,这就是他们所做的。显示字符串,它看起来会很好。我认为您将 inspect 符号与实际内容混淆了。
  • 他们给了我们一个测试,我认为它不起作用,但确实如此。哈!好的,谢谢你的耐心。

标签: ruby merge newline concat


【解决方案1】:

一个简单的例子是:

def rectangle
  a = "|#{'-' * 10}|"
  b = "|#{' ' * 10}|"
  ([a] + [b] * 5 + [a]).join("\n")
end

puts rectangle

【讨论】:

  • 更好:[a] + [b] * rows + [a].
猜你喜欢
  • 2016-01-09
  • 2016-01-31
  • 1970-01-01
  • 2020-09-15
  • 2010-09-27
  • 2011-10-11
  • 2014-05-05
  • 1970-01-01
  • 2017-08-25
相关资源
最近更新 更多