本文简要介绍ruby语言中 String.string[index]
的用法。
用法
string[index] → new_string or nil
string[start, length] → new_string or nil
string[range] → new_string or nil
string[regexp, capture = 0] → new_string or nil
string[substring] → new_string or nil
返回参数指定的self
的子字符串。
当给定单个整数参数 index
时,返回 self
中偏移量 index
的 1 字符子字符串:
'bar'[2] # => "r"
如果 index
为负数,则从 self
的末尾向后计数:
'foo'[-3] # => "f"
如果 index
超出范围,则返回 nil
:
'foo'[3] # => nil
'foo'[-4] # => nil
当给定两个整数参数 start
和 length
时,返回在 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
派生 start
和 length
值,并返回如上所示的值:
-
'foo'[0..1]
等价于'foo'[0, 2]
。 -
'foo'[0...1]
等价于'foo'[0, 1]
。
当给定 Regexp 参数 regexp
且 capture
参数为 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 String.string <=>用法及代码示例
- Ruby String.string << object用法及代码示例
- Ruby String.string + other_string用法及代码示例
- Ruby String.string =~ regexp用法及代码示例
- Ruby String.string % object用法及代码示例
- Ruby String.string ===用法及代码示例
- Ruby String.string ==用法及代码示例
- Ruby String.string * integer用法及代码示例
- Ruby String.strip!用法及代码示例
- Ruby String.strip用法及代码示例
- Ruby String.start_with?用法及代码示例
- Ruby String.scan用法及代码示例
- Ruby String.size用法及代码示例
- Ruby String.scrub用法及代码示例
- Ruby String.swapcase用法及代码示例
- Ruby String.setbyte用法及代码示例
- Ruby String.swapcase!用法及代码示例
- Ruby String.scrub!用法及代码示例
- Ruby String.slice!用法及代码示例
- Ruby String.split用法及代码示例
- Ruby String.squeeze用法及代码示例
- Ruby String.succ用法及代码示例
- Ruby String.slice用法及代码示例
- Ruby String.match?用法及代码示例
- Ruby String.unpack用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 String.string[index]。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。