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

From: Nobuyoshi Nakada <nobu@...>
Date: 2006-11-06 16:25:17 UTC
List: ruby-list #42979
なかだです。

At Tue, 7 Nov 2006 00:26:28 +0900,
keiichi matsunaga wrote in [ruby-list:42975]:
> 4) 縮める場合,前から全角5文字(=10バイト),後ろから全角2文字(=4バイ
> ト)を取り出して,間を「…」でつなぐ
> 
> 問題は4)の段階で,何も考えずに str[0,10] などとやると,漢字の真ん中で
> 切れる,いわゆる泣き別れが起きる可能性があるということです。バイト数と
> 文字数の両方を意識しながら文字を取り出すにはどういう方法があるのでしょ
> うか?

途中で余分な一時オブジェクトができてしまうのがいまいちですが。

class String
  def shorten(start = 10, last = 4)
    if length > start + last
      self[0, start][/.*/m] + "…" + self.match(/.*/, -last)[0]
    else
      self
    end
  end
end

p "長い書名を短くするメソッド".shorten

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread