當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby String.string[index]用法及代碼示例


本文簡要介紹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
也別名為:slice

返回參數指定的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.string[index]。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。