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

wot*_*skd 48 ruby

我正在尝试生成一些Ruby代码,它将获取一个字符串并返回一个新的字符串,从其末尾删除了一些x个字符 - 这些可以是实际的字母,数字,空格等.

例如:给出以下字符串

a_string = "a1wer4zx"

我需要一种简单的方法来获得相同的字符串,减去 - 比如说 - 最后3个字符.在上面的例子中,那将是"a1wer".我现在这样做的方式似乎很复杂:

an_array = a_string.split(//,(a_string.length-2))
an_array.pop
new_string = an_array.join
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Nik*_*bak 104

这个怎么样?

s[0, s.length - 3]
Run Code Online (Sandbox Code Playgroud)

或这个

s[0..-4]
Run Code Online (Sandbox Code Playgroud)

编辑

s = "abcdefghi"
puts s[0, s.length - 3]  # => abcdef
puts s[0..-4]            # => abcdef
Run Code Online (Sandbox Code Playgroud)


Bri*_*per 12

使用这样的东西:

s = "abcdef"
new_s = s[0..-2] # new_s = "abcde"
Run Code Online (Sandbox Code Playgroud)

请参阅slice此处的方法:http://ruby-doc.org/core/classes/String.html


Pau*_*lgo 5

另一种选择可能是使用该slice方法

a_string = "a1wer4zx"
a_string.slice(0..5) 
=> "a1wer4"   
Run Code Online (Sandbox Code Playgroud)

文档:http : //ruby-doc.org/core-2.5.0/String.html#method-i-slice