From: 中村 英夫 <cxn03651 / msj.biglobe.ne.jp> Subject: [ruby-list:41405] Re: 全角スペースを区切りとした文字列分解で Date: Thu, 27 Oct 2005 16:18:55 +0900 るびきちです。 > ・区切り文字は[ \t\r\n\f ] # 最後は全角スペースです > ->ですので、るびきちさん方式はそのままでは流用できそ > うにありません。 > ・全角及び半角の()<>[]「」{}【】内の上記区切り文 > 字は区切りとしない > ・()等のパターンは0以上の任意回出現する 別解として1文字ずつ見ていく方法も考えていました。 参考になれば幸いです。 def zsplit(s) p_open = "[(\(]" # 開きカッコ p_close = "[)\)]" # 閉じカッコ delimiter = "[ ]" # 全角スペース ret = [] chunk = "" paren_level = 0 s.split(//).each {|ch| # 1文字ずつ見ていく case ch when /#{p_open}/ chunk << ch paren_level += 1 when /#{p_close}/ chunk << ch paren_level -= 1 when /#{delimiter}/ if paren_level > 0 chunk << ch else ret << chunk chunk = "" end else chunk << ch end } ret << chunk end p zsplit("あい(う え)お かき") るびきち☆ http://www.rubyist.net/~rubikitch/