Ruby 写了一段统计中英文单词和字数的代码

kai1248 · 2013年08月04日 · 最后由 namiheike 回复于 2013年10月10日 · 4343 次阅读
def Statistics str
    z = str.scan(/\p{Han}+/u).join #选出中文
    h = str.gsub(/\p{Han}+/u, " ") #选出将中文的位置用空格代替

    puts h.scan(/[^\p{P}|\s]+/u).length() + z.length() #选出英文单词并输出字数
    puts h.scan(/[^\p{P}|\s]+/u) #输出英文单词
    puts z #输出中文

end

最近自己搭了一个博客,写文章有时候中英文混着来,计算字数很不方便,就写了一个计数的。 大家看看有什么问题没有。。

对 url 还没想好要不要单独计算。

1 楼 已删除

#1 楼 @lanquan0270 请不要搭车发帖,已删

一个 for 就出来了,utf8 编码英文字母只占一个字节

@hhuai 我计算的是单词,不是字符,中文计算的是字

匿名 #5 2013年08月05日

如果是为了统计总字数可以用str.split('').count

@lewisgrady 中文没有空格的,还有如果书写不规范,中英文之间可能会忘记空格

匿名 #7 2013年08月05日

#6 楼 @kai1248 注意split方法参数不是空格,而是空字符串,里面什么也没有,就算str这个字符串只包含两个空格,比如str=' ',也会被切成两份

@lewisgrady 了解了,以前不太注意。。

匿名 #9 2013年08月05日

#8 楼 @kai1248 哦,貌似我搞错了,楼主是统计单词数,而我是统计的字符数

@lewisgrady 恩,统计中英文混合文章的单词和字数

咦 str.split('').count 和 str.size 有区别么……

需要 登录 后方可回复, 如果你还没有账号请 注册新账号