我对从RubyMonk回答以下问题感到困惑。
让我们在字符串'RubyMonk Is Pretty中找到第二个字符 辉煌'前面有一个空格,应该是'P'
'RubyMonk Is Pretty Brilliant'.match(/ ./, 9)
为什么我会在参数中放置'9'?
我真的很感激解释。
答案 0 :(得分:3)
僧侣清楚地说
当存在第二个参数时,它指定位置 在字符串中开始搜索。
答案 1 :(得分:3)
正如评论中所提到的,代码是“作弊”。通过匹配空格,然后在第9个字符之后开始匹配字符。坦率地说,这是一个如何做它声称要做的事情的可怕例子,因为你不能做到这一点。
如果你真的想找到一个以空格开头的第二个角色,并且你没有作弊并自己寻找它,你可以做以下其中一个:
str = 'RubyMonk Is Pretty Brilliant'
找到一个空格,后跟一个非空格,后跟一个或多个非空格,后跟一个空格,后跟一个字符。捕捉那个角色:
str[/ [^ ]+ (.)/,1]
#=> "P"
找到以空格开头的所有字符,然后找到第二个字符:
str.scan(/(?<= )./)[1]
#=> "P"
拆分空格(仅保留前三个块,以提高效率),然后找到第三个匹配项,然后找到第一个字符:
str.split(' ',3)[2][0]
#=> "P"