- ベストアンサー
文字列のカウント
お世話になります あの、 あいうえお かきくけこ さしすせそ という3組の文字列が有るとします そのそれぞれの組(あいうえおで1つ)を として数えるにはどうしたらいいのでしょうか? 例えば あいうえお+ かきくけこ+ さしすせそ=3 となるようにしたいのですが・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
nextと入れるとって事はコマンドラインで やってるという事でしょうか? とりあえずこんな感じでどうでしょう? #以下インデントは全角空白で行っています。 open(DB, "hoge.txt"); chomp(@List = <DB>); close(DB); $start = 0; while(1){ $end = $start+10 < scalar(@List) ? $start+10 : scalar(@List); for($i=$start; $i<$end; $i++){ print "$List[$i]\n"; } while(1){ print "\ncommand:"; chomp($cmd=<STDIN>); if( $cmd eq "next" ){ $start = $start+10 < scalar(@List) ? $start+10 : $start; last; } elsif( $cmd eq "prev" ){ $start = $start >= 10 ? $start-=10 : $start; last; } elsif( $cmd eq "end" ){ exit; } else { print "command list : next : preview next 10 item\n"; print " : prev : preview previous 10 item\n"; print " : end : this system ends\n"; } } } 違ったらごめんなさい( ´д`)
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
改行で区切れるならば改行を数えてもいけますね。 その「組」と言っているものの仕様が具体的ではないので予想の域を出ませんけども。 べたのテキストデータで 区切りが明確ならば具体的なソースも表記できます。 たとえば、 「あいうえお」の5文字を一つとしたいのか? 例) あい うえお かきくけこ さし すせそたちつ てと で、4となりますね。 一行を1とするならば 例) あい うえお かきくけこ さし すせそたちつ てと で、5となりますよね。 質問のケースならば (テキストデータと仮定して) open(IN,"hoge.txt"); @data = <IN>; close(IN); $i=0; foreach(@data) { $i++; } 見たいな感じでいけます(かなり適当につくったので効率悪いと思いますが)。
補足
実は簡単なデータベースを作ってるんです その際に nextと入れると次の10件が表示されるようにしたいのですが なにかいいコーティングは無いでしょうか? 極力シンプルな構成がいいんのですが・・・
- wakame0729
- ベストアンサー率32% (245/765)
配列を使ったらいかがですか?文字列をそれぞれ配列に追加して行って、その配列の値の数を調べれば良いと思います。
お礼
ありがとうございます 参考にさせていただきます