RubyMonk高级字符串操作

时间:2015-04-16 20:00:56

标签: ruby string

我对从RubyMonk回答以下问题感到困惑。

  

让我们在字符串'RubyMonk Is Pretty中找到第二个字符   辉煌'前面有一个空格,应该是'P'

'RubyMonk Is Pretty Brilliant'.match(/ ./, 9)

为什么我会在参数中放置'9'?

我真的很感激解释。

2 个答案:

答案 0 :(得分:3)

僧侣清楚地说

  

当存在第二个参数时,它指定位置   在字符串中开始搜索。

答案 1 :(得分:3)

正如评论中所提到的,代码是“作弊”。通过匹配空格,然后在第9个字符之后开始匹配字符。坦率地说,这是一个如何做它声称要做的事情的可怕例子,因为你不能做到这一点。

如果你真的想找到一个以空格开头的第二个角色,并且你没有作弊并自己寻找它,你可以做以下其中一个:

str = 'RubyMonk Is Pretty Brilliant'

找到一个空格,后跟一个非空格,后跟一个或多个非空格,后跟一个空格,后跟一个字符。捕捉那个角色:

str[/ [^ ]+ (.)/,1]
#=> "P"

找到以空格开头的所有字符,然后找到第二个字符:

str.scan(/(?<= )./)[1]
#=> "P"

拆分空格(仅保留前三个块,以提高效率),然后找到第三个匹配项,然后找到第一个字符:

str.split(' ',3)[2][0]
#=> "P"