ruby1.8.6我有一个包含数值的数组。我想减少它,以便将相同值的序列减少为该值的单个实例。所以我想a=[1,1,1,2,2,3,3,3,3,2,2,2,3,3,3]减少到[1,2,3,2,3]如您所见,Array#uniq在这种情况下不起作用。我有以下有效的方法:(a.size-1).downto(1){|i|a[i]=nilifa[i-1]==a[i]}谁能想出不那么丑陋的东西? 最佳答案 对于最简单、最精简的解决方案,您可以使用方法Enumerable#chunk:a.chunk(&:itself).map(&:first)
我有这样的东西:{"a":"1","b":"2","c":"3","asefw":"dfsef"}我想在View中打印出来。最好的方法是什么?我尝试将其解析为JSON对象并使用JSON.stringify,但它似乎弄乱了缩进。有什么建议吗?我不介意JavaScript解决方案。 最佳答案 怎么样:require'json'hash=JSON['{"a":"1","b":"2","c":"3","asefw":"dfsef"}']putsJSON.pretty_generate(hash)哪些输出:{"a":"1","b":"2","
我需要解析一个文件以获取单独的SQL语句并从RailsController运行它们。我有以下代码:@sql_file="#{RAILS_ROOT}/lib/evidence_interface_import.sql"@sql_stmts_array=File.read(@sql_file).split(";")@sql_stmts_array.each_with_indexdo|sql_stmt,s_index|ActiveRecord::Base.connection.execute(sql_stmt)end拆分删除了“;”从SQL的末尾开始。有没有办法不删除“;”并且仍然使用“;”
我有一个字符串,里面有一个数组:"[[1,2],[3,4],[5,6]]"我可以将其转换为数组的数组,而不使用eval或正则表达式、gsub等吗?我可以把它变成:[[1,2],[3,4],[5,6]] 最佳答案 下面的怎么样?require'json'arr=JSON.parse("[[1,2],[3,4],[5,6]]")#=>[[1,2],[3,4],[5,6]]arr[0]#=>[1,2] 关于ruby-如何将字符串转换为数组数组?,我们在StackOverflow上找到一个类似的
我有两个字符串:short_string="helloworld"long_string="thisisaverylonglonglong....string"#supposemorethan10000chars我想将print的默认行为更改为:putsshort_string#=>"helloworld"putslong_string#=>"thisisaverylonglong....."long_string只打印了一部分。我尝试更改String#to_s,但没有成功。有谁知道如何做到这一点?已更新实际上我希望它能顺利运行,这意味着以下情况也能正常运行:>putsvery_lon
我似乎无法找出仅当不包含空格时匹配字符串的正则表达式模式。例如"thishaswhitespace".match(/some_pattern/)应该返回nil但是"nowhitespace".match(/some_pattern/)应返回包含整个字符串的MatchData。任何人都可以针对上述问题提出解决方案吗? 最佳答案 在Ruby中我认为它会是/^\S*$/意思是“开始,匹配任意数量的非空白字符,结束” 关于ruby-正则表达式:如果字符串包含空格则不匹配,我们在StackOver
Ruby中的范围非常酷。我最终得到这样的数组:geneRanges=[(234..25),(500..510),(1640..1653)]然后必须删除其中的一部分。为此我:genePositions=geneRanges.collect{|range|range.entries}.flatten=>[500,501,502,503,504,505,506,507,508,509,510,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653]它们会被操纵,因此一些数字被排除在外,而另一些可能会被添加。我
如何序列化数组并将其反序列化为字符串?我尝试了以下代码,但它并没有真正返回原始整数数组,而是返回字符串数组。x=[1,2,3].join(',')#maybethisisnotthecorrectwaytoserializetostring?=>'1,2,3'x=x.split(',')=>['1','2','3']有没有办法在没有.collect{|x|的情况下将其恢复为整数?x.to_i}? 最佳答案 标准方法是使用Marshal:x=Marshal.dump([1,2,3])#=>"\x04\b[\bi\x06i\ai\b"M
我需要做如下的事情e=[]m=[]p=[]t=[]...andsoonforabout10differentarrays有没有办法在一行中创建所有这些数组? 最佳答案 您可以使用以下方法来做到这一点:e,m,p,t...=Array.new(10){[]}事实证明[[]]*10不是正确的方法,[[]]*10用于重复,只是将同一个对象[]重复10次,所以所有变量最终会被分配给同一个对象。 关于ruby-在一行中创建多个数组,我们在StackOverflow上找到一个类似的问题:
我有一个包含新行的列表,我想将它转换成一个数组,例如JANFEBMARAPRMAY进入["JAN","FEB","MAR","APR","MAY]任何帮助将不胜感激。谢谢这样的东西似乎不起作用(text_file.txt包含上面的月份列表)file=File.new("text_file.txt","r")while(line=file.gets)line.chomplist=line.split(/\n/)puts"#{list}"end 最佳答案 这适用于1.9..不确定是否为空?虽然在1.8中可用%(JANFEBMARAPRM