通过x个字符获取Ruby中的子string

我正在尝试生成一些Ruby代码,它将接收一个string并返回一个新的string,并从其末尾删除数字x个字符 – 这些字符可以是实际的字母,数字,空格等。

例如:给出以下string

a_string = "a1wer4zx"

我需要一个简单的方法来获得相同的string,减 – 说 – 最后3个字符。 在上面的情况下,这将是“a1wer”。 我现在这样做的方式似乎很复杂:

 an_array = a_string.split(//,(a_string.length-2)) an_array.pop new_string = an_array.join 

有任何想法吗?

这个怎么样?

 s[0, s.length - 3] 

或这个

 s[0..-4] 

编辑

 s = "abcdefghi" puts s[0, s.length - 3] # => abcdef puts s[0..-4] # => abcdef 

使用这样的东西:

 s = "abcdef" new_s = s[0..-2] # new_s = "abcde" 

请看这里的slice方法: http : //ruby-doc.org/core/classes/String.html

另一个select是获取string的string列表, take x个字符join并返回string:

 [13] pry(main)> 'abcdef'.chars.take(2).join => "ab" [14] pry(main)> 'abcdef'.chars.take(20).join => "abcdef" 

如果你需要在rails中使用,你可以先使用( 源代码 )

 s = '1234567890' x = 4 s.first(s.length - x) # => "123456" 

还有最后 ( 源代码 )

 s.last(2) # => "90" 

或从/到