[#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:49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
From:
Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
Date:
2013-01-29 09:35:44 UTC
List:
ruby-list #49148
はじめまして。横塚と申します。 昨年の11月からRubyの勉強を始めた新参者です。 よろしく、お願い致します。 題名の通り、Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます。 どなたか、良い知恵が有りましたら、ご教示下さいませ。 もし、このMLはそのような場では無いということでしたら、申し訳ありません。 読み捨てて下さい。 さて、やりたいことは、SJIS漢字とASCIIの混在した文字列から、 先頭の72バイトを抜き出したいということです。 target = data[0,72] ; では、72バイトではなく、72文字が転送されてしまうので、もちろんダメでした。 最初に書いたコードは target = "" ; for i in 0..71 do target = target + data.getbyte(i).chr ; end なのですが、一旦getbyteしてしまうと、それを連結したものもASCIIと強制的に看做され、 その後にtargetに対して、SJISコードの正規表現を使うと incompatible encoding regexp match (Windows-31J regexp with ASCII-8BIT string) というエラーになってしまいます。 次に target = "" ; for i in 0..data.size-1 do if target.bytesize >= 72 then break ; end target = target + data[i,1] ; end というコードを書いてみたのですが、なにせ遅い。 このコードを10万回回したら、5秒以上も掛かってしまいました。 少しでも早くしようと、間違いなく72バイトに収まっている文字は先に一気に代入しようと 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 というコードを書いて、10万回のループが0.2秒くらいにはなったのですが、 いかんせん、コードが汚い。 どなたか、もっと綺麗なコードで出来るというお知恵をお貸し下さいませ。 よろしくお願い致します。 -- Daisuke Yokotsuka -- Daisuke Yokotsuka