[ruby-list:42977] Re: 長い書名を短くするメソッド

From: Kazuhiko <kazuhiko@...>
Date: 2006-11-06 15:58:06 UTC
List: ruby-list #42977
かずひこです。

At Tue, 7 Nov 2006 00:26:28 +0900,
keiichi matsunaga wrote:

> 1) コード系はシフトJIS
> 2) 書名はいわゆる全角換算で8文字(=16バイト)にしたい
> 3) 縮めなくて済むのなら縮めない
> 4) 縮める場合,前から全角5文字(=10バイト),後ろから全角2文字(=4バイ
> ト)を取り出して,間を「…」でつなぐ
> 
> 問題は4)の段階で,何も考えずに str[0,10] などとやると,漢字の真ん中で
> 切れる,いわゆる泣き別れが起きる可能性があるということです。バイト数と
> 文字数の両方を意識しながら文字を取り出すにはどういう方法があるのでしょ
> うか?

とりあえず、正規表現の漢字コードオプションで文字単位で切り出せます。

# ↓これがSJISとして
"あいう".split(//s)
=> ["あ", "い", "う"]

EUC-JPなら //e、UTF-8なら //u でどうぞ。

8 文字とか 16 バイトとか程度なら、これを前からカウントしていけばいいと思
いますが、もっと長い場合に効率良く計算するのは何かいい方法があるのかな?
-- 
かずひこ <http://www.fdiary.net/>
  「恋とハックはアジャイルが命!」

In This Thread