我有字符串"001-1776591-7"
,我想将其分为3个部分,"-"
是split
参数。
我已经为第一个和最后一个创建了两个方法,但是字符串的第二部分呢,我怎么能得到它?
更多信息:
我在我的类中创建了两个方法,但在加载视图时出现错误,详情如下:
def serie
@serie || cedula.to_s.split('-').[0] : @serie
end
def identificador
@identificador || cedula.to_s.split('-').[1] : @identificador
end
def verificador
@verificador || cedula.to_s.split('-').[2] : @verificador
end
SyntaxError in TecnicosController#index
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:7: syntax error, unexpected '['
@serie || cedula.to_s.split('-').[0] : @serie
^
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:11: syntax error, unexpected '['
...dor || cedula.to_s.split('-').[1] : @identificador
... ^
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:15: syntax error, unexpected '['
@verificador || cedula.to_s.split('-').[2] : @verificador
答案 0 :(得分:9)
split
方法返回一个数组,因此您可以像获取任何其他数组的第二个元素一样访问它的第二个元素:array[1]
。此外,使用||
栏可以使您的代码更简单。试试这个:
def serie
@serie || cedula.to_s.split('-')[0]
end
def banana
@banana || cedula.to_s.split('-')[1]
end
def verificador
@verificador || cedula.to_s.split('-')[2]
end
答案 1 :(得分:9)
为什么不立刻设置它们?
@serie, @identificador, @verificador = cedula.split('-')
如果您仍想通过方法访问它们,可以通过attr_accessor
或attr_reader
制作属性。
答案 2 :(得分:4)
cedula.to_s.split('-')[1]
split
返回一个数组。
答案 3 :(得分:1)
cedula.to_s.split('-')[0] is the same as cedula.to_s.split('-').first
cedula.to_s.split('-')[1] is the second part of your string
cedula.to_s.split('-').last is the last part in this case the third which can be accessed via: cedula.to_s.split('-')[2] as well
> cedula.to_s.split('-')
=> ["001", "1776591", "7"]
Split将字符串拆分为数组。可以通过以下方式访问数组的元素:
array [0],array [1]等...
数组从0开始。