Groovyで特定文字(空白類文字)を含む部分の長さを調べる
空白類文字を数える。
空白類文字とは空白、改行などのこと。
正規表現の\sで表せるので、\sにマッチするものを数えることにする。
ソース
def matching_length(str, regexp){ result = 0 m = (regexp).matcher(str) m.find() m.each{ chunk -> result += chunk.size() } return result } /* 空白文字は何文字はいっているか? */ println matching_length("abc d eee ff\n", ~/\s/) println matching_length("abc d eee ff", ~/\s/) println matching_length("", ~/\s/) /* 空白12個*/ println matching_length(" \n", ~/\s/) println matching_length(" ", ~/\s/) /* 「も」は何文字はいっているか? */ println matching_length("すももももももももものうち", ~/も+/)
補足
Rubyのsplit(//)は、1文字に分割する処理なので、
each()メソッドで1文字ずつ分割した。
実行結果
===> true ===> true 4 ===> null 3 ===> null 0 ===> null ===> true 13 ===> null 12 ===> null ===> true 9 ===> null
最近のキーワード
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
ページ番号は、この書籍のページ番号
Groovyイン・アクション
posted with amazlet
問題自体は以下の書籍のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
Rubyレシピブック 第2版 268の技
posted with amazlet
Groovyイン・アクションを読むならあった方が便利かな。