[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>

はじめまして。横塚と申します。

16 messages 2013/01/29

[ruby-list:49154] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます

From: Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
Date: 2013-01-29 10:59:49 UTC
List: ruby-list #49154
Shyouhei様

ご教示、ありがとうございます。

> bytesliceってなかったっけと思ったらありますね。だめでしょうか。

調べてみましたが、bytesliceは、1.9.3からの機能みたいですね。
残念ながら、私の環境は1.9.2p290で、1.9.2には存在しない機能のようです。
1.9.2で実行すると

undefined method `byteslice' for #<String:0x48b670> (NoMethodError)

というエラーになってしまいました。

一時的に1.9.3をインストールして試しましたが、bytesliceだと問題なく
上手く行きしたし、実行速度も速かったです。
ただし、諸般の事情で、Rubyのバージョンは1.9.2に固定せざるを得ません。
(せっかく、良い手段を教えて戴いたのに残念です)

何か別な手を考えてみます。

ご教示、ありがとうございました。

横塚


<5107A277.2010401@ruby-lang.org> の、
   "[ruby-list:49150] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます" において、
   "Urabe Shyouhei <shyouhei@ruby-lang.org>"さんは書きました:

> On 01/29/2013 06:35 PM, Daisuke Yokotsuka wrote:
> > はじめまして。横塚と申します。
> > 昨年の11月からRubyの勉強を始めた新参者です。
> > よろしく、お願い致します。
> > 
> > 題名の通り、Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます。
> > どなたか、良い知恵が有りましたら、ご教示下さいませ。
> > 
> > もし、このMLはそのような場では無いということでしたら、申し訳ありません。
> > 読み捨てて下さい。
> > 
> > さて、やりたいことは、SJIS漢字とASCIIの混在した文字列から、
> > 先頭の72バイトを抜き出したいということです。
> > 
> > target = data[0,72] ; 
> > 
> > では、72バイトではなく、72文字が転送されてしまうので、もちろんダメでした。
> 
> bytesliceってなかったっけと思ったらありますね。だめでしょうか。
> 
> target = data.byteslice(0...72)
> 
> 


--
Daisuke Yokotsuka

In This Thread