如何使用“puts”添加额外的换行符而不将换行符粘贴到字符串中?

问题描述 投票:0回答:9

如果我说

puts "Hello"

并决定添加额外的换行符,我需要这样做:

puts "Hello\n"

在字符串中包含这个字符是很难看的。有什么办法可以做到这一点而不污染我的字符串吗?

ruby string newline
9个回答
61
投票

只需再次拨打

puts

puts "Hello"
puts

29
投票
puts "Hello",""

6
投票

我经常发现自己在 ruby 中添加一个常量来包含这些字符

NEW_LINE = "\n"

puts "Hello" + NEW_LINE

我认为它更具可读性,并且如果有人决定在以后用其他内容分隔每一行,则可以轻松更改所有换行符。


4
投票

你觉得这样更好看吗?


puts "Hello"+$/


2
投票

Ruby 使用“的原因” “换行是因为它基于 C。Ruby MRI 是用 C 编写的,甚至 JRuby 也是用 Java 编写的,Java 是基于 C++,而 C++ 又基于 C...你明白了!所以所有这些 C 风格的语言都使用这 ” “对于新线路。

您始终可以编写自己的方法,其行为类似于 put,但根据方法的参数添加新行。


1
投票

你可以直接写

p "Hello"
p 

如果你想保持简短和简单,这也应该有效


0
投票

嗯,我不认为显式换行是丑陋的。 mipadi的回答也很好。只是为了抛出另一个答案,创建一个行数组,然后用换行符连接该数组。 :)


0
投票

您想要修复的内容: 脚本输入:

puts "Hello there"
puts "Goodbye"

脚本输出:

Hello thereGoodbye

解决问题: 脚本输入:

puts "Hello there"
puts
puts "Goodbye"

脚本输出:

Hello there
Goodbye

0
投票
# Class for colorize ex puts "Hello".red
class String
  # colorization
  def colorize(color_code)
    "\e[#{color_code}m#{self}\e[0m"
  end
  def red
    colorize(31)
  end
  def green
    colorize(32)
  end
  def yellow
    colorize(33)
  end
  def blue
    colorize(34)
  end
  def pink
    colorize(35)
  end
  def light_blue
    colorize(36)
  end
end

def print_html
  html = "Hello<br/>world"
end

irb(main):044:0> print_html
=> "Hello<br/>world"
irb(main):045:0> print_html.split('<br/>').each { |n| puts n.pink }
Hello
world                                                                                                                           
=> ["Hello", "world"]
© www.soinside.com 2019 - 2024. All rights reserved.