当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby String.slice用法及代码示例


本文简要介绍ruby语言中 String.slice 的用法。

用法

slice(*args)
别名:[]

返回参数指定的self 的子字符串。

当给定单个整数参数 index 时,返回 self 中偏移量 index 的 1 字符子字符串:

'bar'[2] # => "r"

如果 index 为负数,则从 self 的末尾向后计数:

'foo'[-3] # => "f"

如果 index 超出范围,则返回 nil

'foo'[3] # => nil
'foo'[-4] # => nil

当给定两个整数参数 startlength 时,返回在 self 偏移量 start 中找到的给定 length 的子字符串:

'foo'[0, 2] # => "fo"
'foo'[0, 0] # => ""

如果 start 为负数,则从 self 的末尾向后计数:

'foo'[-2, 2] # => "oo"

特殊情况:如果 start 等于 self 的长度,则返回一个新的空字符串:

'foo'[3, 2] # => ""

如果 start 超出范围,则返回 nil

'foo'[4, 2] # => nil
'foo'[-4, 2] # => nil

如果 length 很大,则返回 self 的尾随子字符串:

'foo'[1, 50] # => "oo"

如果 length 为负数,则返回 nil

'foo'[0, -1] # => nil

当给定单个 Range 参数 range 时,从给定的 range 派生 startlength 值,并返回如上所示的值:

  • 'foo'[0..1] 等价于 'foo'[0, 2]

  • 'foo'[0...1] 等价于 'foo'[0, 1]

当给定 Regexp 参数 regexpcapture 参数为 0 时,返回在 self 中找到的第一个匹配子字符串,如果没有找到,则返回 nil

'foo'[/o/] # => "o"
'foo'[/x/] # => nil
s = 'hello there'
s[/[aeiou](.)\1/] # => "ell"
s[/[aeiou](.)\1/, 0] # => "ell"

如果给定参数 capture 而不是 0 ,则它应该是整数捕获组索引或字符串或符号捕获组名称;方法调用仅返回指定的捕获(参见Regexp Capturing):

s = 'hello there'
s[/[aeiou](.)\1/, 1] # => "l"
s[/(?<vowel>[aeiou])(?<non_vowel>[^aeiou])/, "non_vowel"] # => "l"
s[/(?<vowel>[aeiou])(?<non_vowel>[^aeiou])/, :vowel] # => "e"

如果给出了无效的捕获组索引,则返回 nil。如果给出了无效的捕获组名称,则会引发 IndexError

当给定单个字符串参数 substring 时,如果找到则返返回自 self 的子字符串,否则返回 nil

'foo'['oo'] # => "oo"
'foo'['xx'] # => nil

String#slice String#[] 的别名。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 String.slice。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。