作者LCamel (LCamel)
看板Ruby
标题Re: [问题] 句子断词
时间Mon Jun 16 00:46:36 2008
※ 引述《godfat (godfat 真常)》之铭言:
: ※ 引述《itucson (爱吐桑)》之铭言:
: : 假设我有一句子:「网路应用程式」
: : 我想要随机断词,会断成不同情况
: : 网路应 用 程式 对照 001 1 01
: : 或: 网 路应 用程式 对照 1 01 001
: : 001101, 101001 我已经随机产生了,可是不知道中文字要怎麽随机长度来断
: : 请问该怎麽做比较好
: 两个字串一样长,就 zip 起来并 fold
: 两种状况:
: 0. 串到最後一个词
: 1. 串新词
: 写成程式就是:
: s = '网路应用程式'
: b = '001101'
: result = s.scan(/./u).zip(b.scan(/./)).inject([[]]){ |r, i|
: r.last << i.first
: r << [' '] if i.last == '1'
: r
: }.join
: puts result
: # => 网路应 用 程式
也来练习一下....
s = '网路应用程式'
b = '001101'
puts "#{s.split(//u).zip(b.split(//).map{|x|{"1"," "}[x]})}"
或
i = -1; puts s.gsub(/(.)/u) {|a| $1 + " "[0, b[i+=1]-?0]}
或
i = -1; puts s.gsub(//u){' 'if"0#{b}"[i+=1]==?1}
LCamel
※ 编辑: LCamel 来自: 59.115.146.218 (06/18 06:30)