在红宝石中用于字符串和物体的`head`和`tail`?

时间:2014-08-01 21:05:53

标签: ruby

今天我正在经历一些大字符串突然想到,"我只想headtail这些东西。"

我能够简单地使用:"some large string...".[0..9]显示字符串的前10个字符,并且类似于tail([-10..-1])我想,但是有没有选项已经完成,所以我们可以简单地做:

"string".head(10)"string".tail(50)

同样,我希望看到这样的东西能够解析一般的对象结构。我是否需要构建自己的库,或者这已经在标准库中以某种方式完成了我只是忽略了?

3 个答案:

答案 0 :(得分:1)

Rails&#39>中存在firstlast方法。 ActiveSupport string extensions,但不幸的是核心库。您可以随时将ActiveSupport作为宝石引入。

答案 1 :(得分:0)

这可能有点笨拙,但在纯Ruby(没有ActiveSupport)中你可以这样做:

str = "this is a test"

str.chars.first(10).join
# => "this is a "

str.chars.last(10).join
# => " is a test"

答案 2 :(得分:0)

对于字符串,您可以使用Ruby的String#scan来提供头字符数:

head, tail = "A quite long string that needs to find its head and tail".
  scan(/(.{12})(.+)/).flatten

上面的代码将匹配任何前12个字符和剩余的字符。因此给予:

head #=> "A quite long"
tail #=> " string that needs to find its head and tail"

对于可以用作数组的任何其他内容,您可以使用Array#slice!

a = [1,2,3,4,5,6]
tail = a.dup
head = tail.slice!(0,4)

将给出

tail #=> [5,6]
head #=> [1,2,3,4]