我有一个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)
用户将从下拉选项中进行选择,因此他们只能从原始数组中选择字母.
我正在努力替换字符串中的字符,转换"cat"为"hat".
这是我的代码:
str = "cat"
str[0] = 'h'
puts str
Run Code Online (Sandbox Code Playgroud)
但是当我在TryRuby中运行此代码时,我收到此错误:
NoMethodError:未定义的方法`[] ='for"cat"
是否可以在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.
我目前正在尝试查看记录数组是否与另一个数组共享元素.
我正在使用splat运算符为这样的条件:
if @user.tags.include?(*current_tags)
# code
end
Run Code Online (Sandbox Code Playgroud)
这在标记存在时有效,但在current_tags空时返回此错误.
错误的参数数量(给定0,预期1)
这在我的应用程序中发生了很多,所以我想知道是否有任何替代方案来实现相同的功能,但在其他方式,如果current_tags是一个空数组将不会爆炸.
我正在尝试使用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的累加器,但我很好奇为什么前一个实现不起作用!
我已将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)
期待着解决这个问题.
最好的祝福
我正在尝试制作一个仅验证字母、数字和空格的正则表达式。我不希望接受任何特殊字符(即 # )(*&^%$@!,)
我一直在尝试几件事,但没有给我字母(大写和小写)、数字和空格。
所以它应该接受这样的东西......
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 验证。
我正在编写一个过滤程序,它读取包含地址数据的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/ …
我正在测试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时,左侧=>是空白,右侧是返回值.在这种情况下,左侧是返回值...而右侧只是...如果拼写正确,返回值是多少?为什么?
说
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)
?
如果是的话,那是什么?