80

我正在尝试找到一个函数来选择例如字符串的前 100 个字符。在 PHP 中,存在substr函数

Ruby 有类似的功能吗?

4

2 回答 2

152

尝试foo[0...100],任何范围都可以。范围也可以为负数。Ruby的文档中对此进行了很好的解释。

于 2011-06-21T10:43:26.233 回答
45

使用[]-operator ( docs ):

foo[0, 100]  # Get 100 characters starting at position 0
foo[0..99]   # Get all characters in index range 0 to 99 (inclusive!)
foo[0...100] # Get all characters in index range 0 to 100 (exclusive!)

Ruby 2.7 的更新:现在(截至 2019 年 12 月 25 日)无开始范围,并且可能是“返回数组的第一个 xx”的规范答案:

foo[...100]  # Get all chars from the beginning up until the 100th (exclusive)

使用.slice方法(文档):

foo.slice(0, 100)  # Get 100 characters starting at position 0
foo.slice(0...100) # Behaves the same as operator [] 

为了完整性:

foo[0]         # Returns the indexed character, the first in this case
foo[-100, 100] # Get 100 characters starting at position -100
               # Negative indices are counted from the end of the string/array
               # Caution: Negative indices are 1-based, the last element is -1
foo[-100..-1]  # Get the last 100 characters in order
foo[-1..-100]  # Get the last 100 characters in reverse order
foo[-100...foo.length] # No index for one beyond last character

Ruby 2.6 更新:现在有无尽的范围(截至 2018 年 12 月 25 日)!

foo[0..]      # Get all chars starting at the first. Identical to foo[0..-1]
foo[-100..]   # Get the last 100 characters
于 2016-01-24T09:46:56.797 回答