小编Ste*_*fan的帖子

重新订购ruby数组

我有一个ruby数组:

["A", "C", "B", "D", "F", "E"]
Run Code Online (Sandbox Code Playgroud)

用户将提供输入,例如

input = "B"
Run Code Online (Sandbox Code Playgroud)

我想移动数组中的值,因此数组的第一项等于input,并获得新数组的结果:

["B", "D", "F", "E", "A", "C"]
Run Code Online (Sandbox Code Playgroud)

用户将从下拉选项中进行选择,因此他们只能从原始数组中选择字母.

ruby

1
推荐指数
1
解决办法
97
查看次数

TryRuby为String引发了未定义的方法`[] ='

我正在努力替换字符串中的字符,转换"cat""hat".

这是我的代码:

str = "cat"
str[0] = 'h'
puts str 
Run Code Online (Sandbox Code Playgroud)

但是当我在TryRuby中运行此代码时,我收到此错误:

NoMethodError:未定义的方法`[] ='for"cat"

ruby string replace

1
推荐指数
1
解决办法
148
查看次数

Rails:使用em空间连接数组

是否可以在RoR中使用em空间加入数组?

IRB:

a = ["a", "b", "c"]
#=> ["a", "b", "c"]

a.join('    ')
#=> "a    b    c"

a.join(' ')
#=> "a b c"

a.join(' ')
#=> "a b c"

a.join(' ')
#=> "a b c"
Run Code Online (Sandbox Code Playgroud)

但是由浏览器呈现,a.join(' ')仍然会吐出来a b.

ruby arrays ruby-on-rails

1
推荐指数
1
解决办法
77
查看次数

如何检查数组是否与Ruby中的另一个数组共享元素?

我目前正在尝试查看记录数组是否与另一个数组共享元素.

我正在使用splat运算符为这样的条件:

if @user.tags.include?(*current_tags)
    # code
end
Run Code Online (Sandbox Code Playgroud)

这在标记存在时有效,但在current_tags空时返回此错误.

错误的参数数量(给定0,预期1)

这在我的应用程序中发生了很多,所以我想知道是否有任何替代方案来实现相同的功能,但在其他方式,如果current_tags是一个空数组将不会爆炸.

ruby ruby-on-rails

1
推荐指数
1
解决办法
124
查看次数

为什么`reduce`不评估单个元素数组的块?

我正在尝试使用ruby的reduce方法,这是一个用于枚举操作的好工具.

当数组包含单个元素时,我很难理解为什么下面返回一个字符串而不是一个整数:

["1", "2"].reduce { |sum, i| sum.to_i + i.to_i }
#=> 3 <- expected

["1"].reduce { |sum, i| sum.to_i + i.to_i }
#=> "1" <- not expected, expecting it to be 1
Run Code Online (Sandbox Code Playgroud)

而以下工作如预期:

["1"].reduce(0) { |sum, i| sum.to_i + i.to_i }
#=> 1
Run Code Online (Sandbox Code Playgroud)

我知道在这种情况下我正在初始化值为0的累加器,但我很好奇为什么前一个实现不起作用!

ruby reduce

1
推荐指数
1
解决办法
77
查看次数

弃用警告::不推荐使用confirm选项,将从Rails 4.0中删除.请改用':data => {:confirm =>'Text'}'

我已将rails示例应用程序从3.1版升级到3.2.6版.不幸的是,我有以下弃用警告.

DEPRECATION WARNING: :confirm option is deprecated and will be removed from Rails 4.0. Use ':data => { :confirm => 'Text' }' instead. (called from _app_views_shared__feed_item_html_erb___1282539180373198927_70193136005180 at /Users/Bart/rails_projects/sample_app/app/views/shared/_feed_item.html.erb:27)
Run Code Online (Sandbox Code Playgroud)

期待着解决这个问题.

最好的祝福

ruby-on-rails-3

0
推荐指数
1
解决办法
3152
查看次数

只有空格、字母和数字的正则表达式没有特殊字符

我正在尝试制作一个仅验证字母、数字和空格的正则表达式。我不希望接受任何特殊字符(即 # )(*&^%$@!,)

我一直在尝试几件事,但没有给我字母(大写和小写)、数字和空格。

所以它应该接受这样的东西......

John Stevens 12

james stevens

willcall12
Run Code Online (Sandbox Code Playgroud)

或者

12cell space
Run Code Online (Sandbox Code Playgroud)

但不是这个

12cell space!

John@Stevens

james 12 Fall#
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下

^[a-zA-Z0-9]+$

[\w _]+

^[\w_ ]+$
Run Code Online (Sandbox Code Playgroud)

但它们允许特殊字符或不允许空格。这是用于 ruby​​ 验证。

ruby regex validation

0
推荐指数
1
解决办法
6277
查看次数

Chaning Ruby regexp运算符

我正在编写一个过滤程序,它读取包含地址数据的CSV文件,并排除位于新月(cres),avenue(ave)或place(pl)中的行.

这是一些示例输入:

data = <<CSV
ID,Street address,Town,Valuation date,Value
1,1 Northburn RD,WANAKA,1/1/2015,280000
2,1 Mount Ida PL,WANAKA,1/1/2015,280000
3,1 Mount Linton AVE,WANAKA,1/1/2015,780000
4,1 Centre CRES,WANAKA,1/1/2015,295000
CSV

require 'csv'

elements = []
CSV.parse(data, headers: true, header_converters: :symbol) do |row|
  elements << row.to_h
end
elements
#=> [
#     {:id=>"1", :street_address=>"1 Northburn RD", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"280000"},
#     {:id=>"2", :street_address=>"1 Mount Ida PL", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"280000"},
#     {:id=>"3", :street_address=>"1 Mount Linton AVE", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"780000"},
#     {:id=>"4", :street_address=>"1 Centre CRES", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"295000"}
#   ]
Run Code Online (Sandbox Code Playgroud)

我可以使用简单的正则表达式来过滤三个中的一个,即/pl/ …

ruby regex

0
推荐指数
1
解决办法
34
查看次数

使用IRB时,=>运算符左侧的意义是什么?

我正在测试scan方法,试图更好地理解它.我在命令行中使用IRB来测试它,使用ruby文档中提供的示例:

a = "cruel world"
a.scan(/(.)(.)/) {|x,y| print y, x }
Run Code Online (Sandbox Code Playgroud)

应该返回:

rceu lowlr
Run Code Online (Sandbox Code Playgroud)

好吧,当我运行它时,它确实返回rceu lowlr=> "cruel world":

$ irb
irb(main):001:0> a = "cruel world"
=> "cruel world"
irb(main):002:0> a.scan(/(.)(.)/) {|x,y| print y, x }
rceu lowlr=> "cruel world"
irb(main):003:0>
Run Code Online (Sandbox Code Playgroud)

通常在使用IRB时,左侧=>是空白,右侧是返回值.在这种情况下,左侧是返回值...而右侧只是...如果拼写正确,返回值是多少?为什么?

ruby

0
推荐指数
1
解决办法
57
查看次数

Ruby: stringA.gsub(/\s+/, '') 与 stringA.strip

string = "Johnny be good! And smile   :-) "
Run Code Online (Sandbox Code Playgroud)

之间有区别吗

string.gsub(/\s+/, '')
Run Code Online (Sandbox Code Playgroud)

string.strip
Run Code Online (Sandbox Code Playgroud)

如果是的话,那是什么?

ruby ruby-on-rails

0
推荐指数
1
解决办法
1777
查看次数