Ruby String / Array Write程序

时间:2013-11-29 02:59:46

标签: ruby arrays string

对于我正在为学校工作的项目,该项目的一个部分要求我们收集所有联邦主义者论文的集合并通过一个程序运行它,该程序基本上分割文本并写入新文件(每个不同的联邦党人文件。)

我决定采用的逻辑是进行搜索,每次搜索对“联邦党人号”都是肯定的。它将保存到新文件中,直到下一个“联邦主义者否”。 这是我到目前为止的算法:

file_name = "Federalist" 
section_number = "1"

new_text = File.open(file_name + section_number, 'w')
i = 0 
n= 1
while i < l.length 
  if (l[i]!= "federalist") and (l[i+1]!= "No")
    new_text.puts l[i]
    i = i + i
  else 
    new_text.close
    section_number = (section_number.to_i +1).to_s
    new_text = File.open(file_name + section_number, "w")
    new_text.puts(l[i])
    new_text.puts(l[i+1])
    i=i+2
  end
end

尽可能多地调试代码(我是Ruby的初学者),我遇到的问题是因为while函数总是成立,所以它永远不会进入{{1命令。

就以不同方式解决这个问题而言,我的技术援助提出了以下建议:

  1. 通过循环遍历数组(l)并将每行添加到一个大字符串中,将整个文本放在一个字符串中。
  2. 使用else方法和关键字“FEDERALIST No.”拆分字符串这将创建一个数组,每个元素都是文本的一部分:

    split
  3. 然后,您可以使用您在程序中使用的类似方法遍历此新数组,以便为​​每个元素创建文件。

  4. 但是听起来很简单,我把这些代码放在一起非常困难。

1 个答案:

答案 0 :(得分:0)

i = i + i

i从0开始,0被添加到它,它给出0,它总是小于l,无论该值是什么意思。

由于这是一项学校作业,我不愿意给你一个直截了当的回答。这真的不是那个SO,我很高兴你没有征求完整的解决方案。

因此,我将指导您使用Ruby中的一些有用的方法,而这些方法可能有所帮助。

在数组中:.join.each.map
字符串:.split

Fyi,你的TA的建议比你决定开始的算法简单得多......虽然从技术上讲,它没有错。只是更复杂。