• ベストアンサー

文字列のカウント

お世話になります あの、 あいうえお かきくけこ さしすせそ という3組の文字列が有るとします そのそれぞれの組(あいうえおで1つ)を として数えるにはどうしたらいいのでしょうか? 例えば あいうえお+ かきくけこ+ さしすせそ=3 となるようにしたいのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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";   }  } } 違ったらごめんなさい( ´д`)

gonntetu
質問者

お礼

ありがとうございます 参考にさせていただきます

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

改行で区切れるならば改行を数えてもいけますね。 その「組」と言っているものの仕様が具体的ではないので予想の域を出ませんけども。 べたのテキストデータで 区切りが明確ならば具体的なソースも表記できます。 たとえば、 「あいうえお」の5文字を一つとしたいのか? 例) あい うえお かきくけこ さし すせそたちつ てと で、4となりますね。 一行を1とするならば 例) あい うえお かきくけこ さし すせそたちつ てと で、5となりますよね。 質問のケースならば (テキストデータと仮定して) open(IN,"hoge.txt"); @data = <IN>; close(IN); $i=0; foreach(@data) { $i++; } 見たいな感じでいけます(かなり適当につくったので効率悪いと思いますが)。

gonntetu
質問者

補足

実は簡単なデータベースを作ってるんです その際に nextと入れると次の10件が表示されるようにしたいのですが なにかいいコーティングは無いでしょうか? 極力シンプルな構成がいいんのですが・・・

回答No.1

配列を使ったらいかがですか?文字列をそれぞれ配列に追加して行って、その配列の値の数を調べれば良いと思います。

関連するQ&A