|
|
|
|
|
定型処理編〜文字列の整形 |
|
|
|
|
|
一行ずつ処理する |
|
|
|
次に文章を一行ずつ処理してみたいと思います。一行ずつ処理する場合は『反復』命令を使うと一行ずつ処理できます。以下は文章に行番号をつけて表示するプログラムです。 |
|
|
|
文章は「あいうえお
かきけこ
さしすせそ」
文章を反復
「{回数}:{それ}」を表示。 |
|
|
|
これを実行すると以下のように表示されます。
---
1:あいうえお
2:かきけこ
3:さしすせそ
---
文字列を『反復』構文にかけると文字列の一行ずつが取りだされて、変数『それ』に代入されるのです。 |
|
|
|
表示するだけだと、データを利用できませんね。前のページでやったように『言う』命令で結果を確認してからコピーする方法は無いのですか? |
|
|
|
結果を変数に貯めておいて最後に『言う』命令で表示させれば、結果を確認してからコピーできます。 |
|
|
|
文章は「あいうえお
かきけこ
さしすせそ」
結果は空
文章を反復
結果に「{回数}:{それ}」を一行追加。
結果を言う |
|
|
|
変数『結果』に一行追加して最後に結果を表示するわけね。でもちょっと面倒だわ。 |
|
|
|
そう言われると思ったので、別の方法を紹介します。実は『表示』で表示した文字列は『表示ログ』という変数に記録されているのです。ですから最後に『表示ログを言う』の一文を書き足せば、今まで表示した内容を確認した後、文字の上を右クリックすることで表示した内容をコピーできます。 |
|
|
|
文章は「あいうえお
かきけこ
さしすせそ」
文章を反復
「{回数}:{それ}」を表示。
表示ログを言う |
|
|
一行の中で必要なところだけ取り出す |
|
|
|
次に文章の中にある必要な部分だけ取り出す処理を書いてみましょう。例えば、以下のようなうどん屋のメニューがあったとします。このメニュー表から料理の名前と値段だけを取り出してみましょう。 |
|
|
---メニュー---
クジラうどん-店長自慢の一品-800円-★★★
たぬきうどん-素朴な味が癖になる-500円-★
カレーうどん-マイルドな味わい-750円-★
特大天ぷらうどん-巨大なエビがさっくり-900円-★★★
カルシウムうどん-魚の骨が香ばしいうどん-600円-★★ |
|
|
|
このメニュー表を良く見ると、
『メニュー名 - コメント - 値段 - 評価』
という順番で並んでします。この並び順に注目すると簡単に取り出せます。 |
|
|
データは「クジラうどん-店長自慢の一品-800円-★★★
たぬきうどん-素朴な味が癖になる-500円-★
カレーうどん-マイルドな味わい-750円-★
特大天ぷらうどん-巨大なエビがさっくり-900円-★★★
カルシウムうどん-魚の骨が香ばしいうどん-600円-★★」
データを反復
「-」で区切る # 「-」の記号で区切る
名前=それ¥0
値段=それ¥2
「{名前},{値段}」を表示。
表示ログを言う。 |
|
|
このプログラムを実行すると以下の結果が得られます。
---
クジラうどん,800円
たぬきうどん,500円
カレーうどん,750円
特大天ぷらうどん,900円
カルシウムうどん,600円
--- |
|
|
|
メニューのデータが 『メニュー名 - コメント - 値段 - 評価』と、「-」の記号で区切られているのに注目し、なでしこの『区切る』という命令で区切ったのです。区切られたデータは変数「それ」に配列形式で得られるので、『それ¥0』というのでメニューの名前を、『それ¥2』というのでメニューの値段を取り出しています。 |
|
|
切り取って調べる |
|
|
|
次にもっと複雑な形をしたデータから必要な部分だけを抜き出してみましょう。データの例として取り上げるのは、商品データです。さっきのデータと違って『ID:商品名(値段)コメント』の形式で並んでおりちょっと大変そうです。 |
|
|
ID:商品名(値段)コメント
001:ピンク色のせっけん(500円)ピンクがすごい
002:4レンズあるメガネ(1200円)奇抜
003:飲めるガソリン(800円)まずそう |
|
|
|
そこで使うのが『切り取る』という命令です。この命令を使うと任意の区切り文字までを取り出すことができます。 |
|
|
|
『切り取る』命令は、『SのAまでを切り取る』という形式で使い、Sの内容から区切り文字Aまでを切り取って、変数『それ』に答えを返します。以下は『切り取る』命令の簡単な使用例です。 |
|
|
|
文章は「ささ=かまぼこ」
文章の「=」までを切り取る
それを表示
文章を表示 |
|
|
|
上のプログラムを実行すると
---
ささ
かまぼこ
---
と表示されます。文章の「=」までを切り取った内容が「ささ」となり、文章の内容から「ささ=」までが切り取られているのが分かるでしょうか。 |
|
|
|
さて、『切り取る』を覚えたところで、本題に戻りましょう。先ほどの商品データから『商品名,
値段』のデータを取り出すプログラムが以下です。 |
|
|
データは「ID:商品名(値段)コメント
001:ピンク色のせっけん(500円)ピンクがすごい
002:4レンズあるメガネ(1200円)奇抜
003:飲めるガソリン(800円)まずそう」
データを反復
対象はそれ
対象の「:」まで切り取る
IDはそれ
対象の「(」まで切り取る
商品名はそれ
対象の「)」まで切り取る
値段はそれ
コメントは対象。
「{商品名},{値段}」を表示
表示ログを言う |
|
|
|
プログラムを実行すると以下が表示されます。
---
商品名,値段
ピンク色のせっけん,500円
4レンズあるメガネ,1200円
飲めるガソリン,800円
--- |
|
|
巨大なファイルを一行ずつ処理する |
|
|
|
時には、ものすごく巨大なファイルを開いて一行ずつ処理したいときがあります。そんなとき、『開く』命令を使うと処理に膨大な時間がかかる場合があります。そんな時に使うのが『(ファイル名)を毎行読む』という命令です。これは『反復』構文と組みあせて使います。 |
|
|
|
「History.txt」を毎行読む。
反復
#ここで毎行行う処理
表示。 |
|
|
> |
|
|
|
次のページ→ファイルのバックアップ
前のページ←文章整形の基本
|
|