井澤です。rubyにはいつもお世話になってます。

Rubyで文字列を扱ってると、Cのstrtokみたいに先頭から手軽にトークンを取り
出しor取り除きたいことがけっこうあるので、String#shiftっていうメソッドを
考えてみました。

具体的にはsplit[0]を返して、残りの文字列を取り出したぶん詰めるというメソッ
ドです。用途によってはscanやindexを使って取り出すより手軽でいいと思いま
すがどうでしょう。

こんな感じ:

>> a = "hahaha hihihi fufufu"
=> "hahaha hihihi fufufu"
>> a.shift
=> "hahaha"
>> a
=> "hihihi fufufu"
>> a.shift
=> "hihihi"
>> a
=> "fufufu"
>> a.shift
=> "fufufu"
>> a
=> ""

自分では以下のような拡張モジュールを作って使ってます。標準であると便利だ
と思うのでリクエストします。

# とりあえず名前は悪くないと思う ^^;


begin 644 strshift.c M(VEN8VQU9&4@(G)U8GDN:"(*(VEN8VQU9&4@(G)E+F@B"B-D969I;F4@0D5' M*&YO*2!R96=S+3YB96=;;F]="B-D969I;F4@14Y$*&YO*2!R96=S+3YE;F1; M;F]="@IS=&%T:6,@5D%,544*<F)?<W1R7W-H:69T*&%C+"!A=BP@<W1R*0H@ M("`@(&EN="!A8SL*("`@("!604Q512`J878["B`@("`@5D%,544@<W1R.PI[ M"B`@5D%,544@<W!A=#L*("!S=')U8W0@<F5?<F5G:7-T97)S("IR96=S.PH@ M(%9!3%5%(')E<W5L=#L*"B`@<F)?<V-A;E]A<F=S*&%C+"!A=BP@(C`Q(BP@ M)G-P870I.PH*("!I9BAA8R`]/2`P*7L*("`@('-P870@/2!R8E]F<SL*("!] M"@H@('-W:71C:"A465!%*'-P870I*7L*("!C87-E(%1?4U1224Y'.@H@(&-A M<V4@5%].24PZ"B`@("!I9BA.24Q?4"AS<&%T*2!\?`H@("`@("`@*%)35%)) M3D<H<W!A="DM/G!T<ELP72`]/2`G("<@)B8 / 4E-44DE.1RAS<&%T*2T^;&5N M(#T](#$I*7L*("`@("`@<W!A="`](')B7W)E9U]N97<H(EQ<<RLB+"`S+"`P M*3L*("`@('T*("`@(&5L<V4@:68H4E-44DE.1RAS<&%T*2T^;&5N(#T](#$I M>PH@("`@("!S<&%T(#T@<F)?<F5G7VYE=RA24U1224Y'*'-P870I+3YP='(L M(%)35%))3D<H<W!A="DM/FQE;BP@,"D["B`@("!]"B`@("!E;'-E('L*("`@ M("`@<W!A="`](')B7W)E9U]R96=C;VUP*'-P870I.PH@("`@?0H@("`@8G)E M86L["B`@("`@("`@"B`@8V%S92!47U)%1T584#H*("`@(&)R96%K.PH*("!D M969A=6QT.@H@("`@<F)?<F%I<V4H<F)?94%R9T5R<F]R+"`B8F%D('-E<&%R M871O<B(I.PH@('T*("`*("!I9BAR8E]R96=?<V5A<F-H*'-P870L('-T<BP@ M,"P@,"D@/"`P*7L*("`@(')E<W5L="`](')B7W-T<E]D=7`H<W1R*3L*("`@ M(')B7W-T<E]M;V1I9GDH<W1R*3L*("`@(')B7W-T<E]R97-I>F4H<W1R+"`P M*3L*("`@(')E='5R;B!R97-U;'0["B`@?0H@(&5L<V4@>PH@("`@<F5G<R`] M(%)-051#2"AR8E]B86-K<F5F7V=E="@I*2T^<F5G<SL*("`@(')E<W5L="`] M(')B7W-T<E]N97<H4E-44DE.1RAS='(I+3YP='(L($)%1R@P*2D["@H@("`@ M<F)?<W1R7VUO9&EF>2AS='(I.PH@("`@;65M;6]V92A24U1224Y'*'-T<BDM M/G!T<BP / 4E-44DE.1RAS='(I+3YP='(@*R!%3D0H,"DL"@D@("`@4E-44DE. M1RAS='(I+3YL96X@+2!%3D0H,"DI.PH@("`@<F)?<W1R7W)E<VEZ92AS='(L M(%)35%))3D<H<W1R*2T^;&5N("T@14Y$*#`I*3L*"B`@("!I9BA"14<H,"D@ M/3T@,"`F)B!"14<H,"D@(3T@14Y$*#`I("8F(%)35%))3D<H<W1R*2T^;&5N M(#X@,"E["B`@("`@(')E='5R;B!R8E]S=')?<VAI9G0H86,L(&%V+"!S='(I M.PH@("`@?0H@("`@96QS92!["B`@("`@(')E='5R;B!R97-U;'0["B`@("!] M"B`@?0I]"@IV;VED"DEN:71?<W1R<VAI9G0H*0I["B`@<F)?9&5F:6YE7VUE M=&AO9"AR8E]C4W1R:6YG+"`B<VAI9G0B+"!R8E]S=')?<VAI9G0L("TQ*3L* "?0IO ` end