在使用“\ n”条件分割单个字符串后,逐行打印ruby数组元素

时间:2016-10-12 14:01:28

标签: arrays ruby string stringstream

我有一个字符串,使用以下形式的反引号实现:

output = `git log`

然后,我将结果拆分为“\ n”,结果进入表格数组:

array = output.split("\n")

然后,我只是试图在屏幕上输出结果,但是,当我使用

array.each do |a|
    puts a
end

我得到的结果是双线:

result after puts
(empty line)
result after puts etc

当我的首选结果是表格的一行时:

result after puts
result afters puts etc

我尝试用print进行此操作,但我得到了:

result after puts result after puts etc

在一行中。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

问题是当您使用\n进行拆分时,如果有两个\n字符,则会将空""添加到数组中。

eg: test = ["this","","is","test"]

如果你这样做,

test.each do |a|
    puts a
end

The o/p will be,

this
// a new line will come here.
is
test

所以你应该拒绝空值,

test2 = test.reject{ |value| value == ""}

  test2.each do |a|
        puts a
    end

结果是,

  this
  is
  test

以同样的方式,

output = `git log`

array = output.split("\n")

array2 = array.reject{ |value| value == ""}

array2.each do |a|
    puts a
end

这将为您提供正确的结果。

答案 1 :(得分:0)

感谢@AndreyDeineko,我们有:

"问题是当您使用\ n进行拆分时,如果有两个\ n字符,那么空的""被添加到数组中。怎么会? a =" 1 \ n2 \ n3 \ n4 \ n&#34 ;; a.split(" \ n")#=> [" 1"," 2"," 3"," 4"]。

因此,array.each { |a| a }将适合你"

它对我来说不起作用100%,但是使用他的答案,我设法达到了所需的结果:

array.each { |a| a }
    puts array