如何将字符串分成三部分?

时间:2011-07-03 01:36:31

标签: ruby-on-rails ruby

我有字符串"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

4 个答案:

答案 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_accessorattr_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开始。