[#49119] Ruby/Tk カーソル位置の移動方法について — masa masa <masamasa.ruby@...>
初めまして安藤と申します。
3 messages
2013/01/07
[#49131] [ANN] Ruby生誕20周年記念パーティのお知らせ — Kakutani Shintaro <shintaro@...>
一般社団法人日本Rubyの会のかくたにです。
6 messages
2013/01/15
[#49138] [ANN] Ruby 1.9.3 patchlevel 374 — "U.Nakamura" <usa@...>
Ruby ユーザーの皆様
3 messages
2013/01/17
[#49140] [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ — arton <artonx@...>
artonです。
7 messages
2013/01/18
[#49271] Re: [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ
— whiteleaf <2nd.leaf@...>
2013/03/12
whiteleaf です。
[#49272] Re: [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ
— Takahiro Kambe <taca@...>
2013/03/12
In message <CAGePti=3ArS8QeiAgt+B5t4StXdHZ6vuiz9d+=Ef-wk1M=WkDg@mail.gmail.com>
[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
はじめまして。横塚と申します。
16 messages
2013/01/29
[#49150] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Urabe Shyouhei <shyouhei@...>
2013/01/29
On 01/29/2013 06:35 PM, Daisuke Yokotsuka wrote:
[#49154] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
2013/01/29
Shyouhei様
[#49156] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Takeshi Iogawa <alpha@246.ne.jp>
2013/01/29
いおがわと申します。
[#49149] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— "Shota Fukumori (sora_h)" <sorah@...>
2013/01/29
sorahです。
[#49152] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— sunao tanabe <aib@...>
2013/01/29
たなべです。
[#49166] Enumerator#+ — 小田 利通 <oda@...>
13 messages
2013/01/31
[#49167] Re: Enumerator#+
— <alucky0707@...>
2013/01/31
あらきという者です。
[#49169] Re: Enumerator#+
— "H.Hiro" <main@...>
2013/01/31
SC5IaXJvGyRCJEckOSEjGyhCDQoNCj4gGyRCPi5FRCRIPz0kNyReJDkhIxsoQg0KPg0KPiAbJEI6
[ruby-list:49155] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
From:
Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
Date:
2013-01-29 11:12:25 UTC
List:
ruby-list #49155
sorah様
たびたび、ありがとうございます。
target = data.bytes.take(72).map(&:chr).join ;
target.force_encoding("Windows-31J") ;
で、上手く行きました。
ただ、残念ながら、実行速度がやっぱり遅いようです。
10万回のループで上記のコードは3秒以上掛かりました。
試行錯誤して書いた
num_of_kanji = data.bytesize - data.size ;
minmum_length = 72 - num_of_kanji ;
target = data[0, minmum_length] ;
for i in minmum_length..71 do
if target.bytesize >= 72 then
break ;
end
target = target + data[i,1]
end
が0.2秒程度ですので、多少汚いコードでも、やはりこれで行くしか無いのでしょうか。
ご教示、ありがとうございました。
横塚
<CA+wiQwsBwJwTLfYMxxmEEJOevDbvGtFoEg8oGaKB5n7NafQghA@mail.gmail.com> の、
"[ruby-list:49153] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます" において、
""Shota Fukumori (sora_h)" <sorah@tubusu.net>"さんは書きました:
>
> sorahです。
>
> On Tuesday, January 29, 2013, Daisuke Yokotsuka wrote:
>
> > sorah様
> >
> > ご教示、ありがとうございます。
> >
> > > data.bytes.take(72) で 72 バイトを Array で取得できるので、String で欲しければそれを join す
れば
> > > String が取れると思います。
> >
> > 実際にやってみましたが、
> >
> > "ああああああああああああああああああああああああああああああああああああ"
> > という内容のdataに対して、
> >
> > target = data.bytes.take(72).join ;
> >
> > というコードを実行すると、targetの内容は
> > 130160130160130160130160130160130160130160130160130160130160130160130160
> > ・・・
> > という文字列になってしまいます。
>
> 配列の書く要素は数値になる事を失念していました。
>
> data.bytes.take(72).map(&:chr).join でバイト列になるはずです。
> (ただ、byteslice(0...72) でも良さそうです)
>
>
> > そのため
> >
> > temp = data.bytes.take(72) ;
> > target = "" ;
> > temp.each do | x |
> > target = target + x.chr ;
> > end
> >
> > というコードにしてみましたが、getbyteと同様に、出来上がったtargetが強制的にASCIIと看做され、
> > targetに対して、SJISコードの正規表現を使うと
> > incompatible encoding regexp match (Windows-31J regexp with ASCII-8BIT
> > string)
> > というエラーになってしまいました。
>
> バイト列として取り出したため、エンコード情報がASCII-8BITになっています。
>
> String#force_encoding を利用して、エンコード情報をセットしてみてはどうでしょうか。
>
>
> --
> Shota Fukumori a.k.a. @sora_h - http://sorah.jp/
>
>
>
>
--
Daisuke Yokotsuka