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

Lui*_*aca 3 ruby ruby-on-rails

我有字符串"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
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 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
Run Code Online (Sandbox Code Playgroud)


Mar*_*mas 9

为什么不立刻设置它们?

@serie, @identificador, @verificador = cedula.split('-')
Run Code Online (Sandbox Code Playgroud)

您可以通过attr_accessor或者attr_reader如果您仍想通过方法访问它们来创建属性.


Dex*_*Dex 5

cedula.to_s.split('-')[1]
Run Code Online (Sandbox Code Playgroud)

split返回一个数组。