如何在ruby中使用string方法“[]”
第一行返回如何在ruby中使用string方法“[]”,ruby,Ruby,第一行返回NilClass,第二行返回String。Ruby方法String#[n]返回单个字符串,String#[m,n]从字符串返回子字符串。这是否意味着单个字符串与子字符串不同?请遵循以下代码: 2.0.0p247 :069 > str[str.length].class => NilClass 2.0.0p247 :071 > str[str.length, 1].class => String 2.0.0p247 :072 > str[str.leng
NilClass
,第二行返回String
。Ruby方法String#[n]
返回单个字符串,String#[m,n]
从字符串返回子字符串。这是否意味着单个字符串与子字符串不同?请遵循以下代码:
2.0.0p247 :069 > str[str.length].class
=> NilClass
2.0.0p247 :071 > str[str.length, 1].class
=> String
2.0.0p247 :072 > str[str.length, 2].class
=> String
2.0.0p247 :073 > str[str.length+ 1, 2].class
=> NilClass
文件:
元素引用-(a)如果传递了单个索引,则返回该索引处一个字符的子字符串。(b)如果传递了开始索引和长度,则返回包含从该索引处开始的长度字符的子字符串
适用于以上两种情况-如果索引为负数,则从字符串末尾开始计数。对于起始和范围大小写,起始索引正好位于字符和与字符串大小匹配的索引之前(c)此外,当字符范围的起始索引位于字符串末尾时,将返回空字符串。
(d) 如果初始索引超出字符串范围或长度为负,则返回nil
- 为什么
s[s.size]#=>nil
3
中没有字符,所以返回nil
(应用规则-a)。规则-a表示,如果存在,则从指定索引返回字符;如果未找到,则返回nil
- 为什么
s[s.size,1]#=>“”
- 为什么
s[s.size+1,1]#=>nil
nil
是Nilclass
的一个实例,'
空字符串是string类的一个实例。因此,您得到的都是有效的
s = "abc"
s[s.size] # => nil
s[s.size,1] # => ""
s.size # => 3
请遵循以下代码:
2.0.0p247 :069 > str[str.length].class
=> NilClass
2.0.0p247 :071 > str[str.length, 1].class
=> String
2.0.0p247 :072 > str[str.length, 2].class
=> String
2.0.0p247 :073 > str[str.length+ 1, 2].class
=> NilClass
文件:
元素引用-(a)如果传递了单个索引,则返回该索引处一个字符的子字符串。(b)如果传递了开始索引和长度,则返回包含从该索引处开始的长度字符的子字符串
适用于以上两种情况-如果索引为负数,则从字符串末尾开始计数。对于起始和范围大小写,起始索引正好位于字符和与字符串大小匹配的索引之前(c)此外,当字符范围的起始索引位于字符串末尾时,将返回空字符串。
(d) 如果初始索引超出字符串范围或长度为负,则返回nil
- 为什么
s[s.size]#=>nil
3
中没有字符,所以返回nil
(应用规则-a)。规则-a表示,如果存在,则从指定索引返回字符;如果未找到,则返回nil
- 为什么
s[s.size,1]#=>“”
- 为什么
s[s.size+1,1]#=>nil
nil
是Nilclass
的一个实例,'
空字符串是string类的一个实例。因此,您得到的都是有效的
s = "abc"
s[s.size] # => nil
s[s.size,1] # => ""
s.size # => 3
这是否意味着单个字符串与子字符串不同
不。这意味着根据传递给它的参数,它的行为会有所不同
您正在尝试访问字符串的最后一个字符
s = "abc"
s[s.size].class # => NilClass
s[s.size,1].class # => String
返回nil
,因为那里没有字符
国家:
如果初始索引超出字符串范围或长度为负数,则返回nil
返回最后一个字符,然后
str[-1]
返回字符串
同样地
str[-1].class
返回空字符串“
同样,各国(强调我国):
如果传递了开始
索引和长度
,返回包含从索引开始的长度
字符的子字符串
由于str
的结尾不再有字符,因此此子字符串为空
这是否意味着单个字符串与子字符串不同
不。这意味着根据传递给它的参数,它的行为会有所不同
您正在尝试访问字符串的最后一个字符
s = "abc"
s[s.size].class # => NilClass
s[s.size,1].class # => String
返回nil
,因为那里没有字符
国家:
如果初始索引超出字符串范围或长度为负数,则返回nil
返回最后一个字符,然后
str[-1]
返回字符串
同样地
str[-1].class
返回空字符串“
同样,各国(强调我国):
如果传递了开始
索引和长度
,返回包含从索引开始的长度
字符的子字符串
由于
str
的结尾不再有字符,因此此子字符串是空的。但是为什么s[s.size+1,1]#=>nil
不是空字符串,规则-b应该应用它。@jsvisa来自:“如果初始索引超出字符串或长度为负,则返回nil
。@stefan但是s[s.size,1]
也应为nil
,因为s.size
不属于string@tihom“此外,当字符范围的起始索引位于字符串末尾时,将返回一个空字符串。”@Stefan不适用于str[range]
和str[start,length]
,我猜不是从这里的结果,但这听起来不正确,但为什么s[s.size+1,1]#=>nil
不是空字符串,规则-b应该应用它。@jsvisa来自:“如果初始索引超出字符串或长度为负,则返回nil
。@stefan但是s[s.size,1]
也应为nil
,因为s.size
不在