logo       

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

lang.ruby.japanese

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

なかだです。

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はできる。
中田 伸悦




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise