• 締切済み

文字認識について教えてください

perlでプログラムを書いています。 配列に//と連続で入っているとき、 (例えばa[0]=a,a[1]=b,a[2]=/,a[3]=/,a[4]=c,a[5]=/,a[6]=d) $count=@a for($i=0;$i<$count;$i++){ if(@a[$i] eq"/"){ 省略 } } とやると、a[3]とa[5]ではifの中に入るのに、a[2]では入りません。 これはどうしてでしょうか? 教えてください。

みんなの回答

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

>配列に//と連続で入っているとき、 と書いてあるので、ひょっとして a[2] = "//"; ですか? 先頭の一文字だけ比較するなら if(substr($a[$i],0,1) eq "/"){ 省略 } または正規表現で、 if($a[$i] =~ m|^/|){ 省略 } /を含めばいいのであれば、 if($a[$i] =~ m|/|){ 省略 }

すると、全ての回答が全文表示されます。
回答No.2

手元の環境では、a[2]でもifの中に入りますよ。 @a = ('a','b','/','/','c','/','d'); $count=@a; for($i=0;$i<$count;$i++){ if(@a[$i] eq"/"){ print "$i "; } } 結果は、2 3 5 が出力されます。 なお、結果に影響はないと思いますが、 if(@a[$i] eq"/"){ の部分は、 if($a[$i] eq"/"){ にした方がいいと思います。 うまくいかないのは、「省略」の部分(連続した/を検出する部分)の問題じゃないでしょうか。こういうときは、どこに問題があるのか知るために、print文を入れて変数を出力したり、複雑な部分を一旦コメントアウトして単純化したプログラムにして実行してみるとよいと思います。つまづくたびに教えてgooで質問したら、あなたの時間がもったいないし、なかなか上達しません。 それから、この手の処理は、文字認識とはいいません。文字認識とは一般的に、手書きや印刷された文字を読み取って、判別することを言うと思います。

wawawawawa
質問者

お礼

タイトルへのご指摘ありがとうございます。 ちなみに、どこに問題があるか知るために、print文で出力したり、他の部をコメントアウトしたりは当然やっております。 それでもできないので、今回は質問させて頂きました。 たまたま、2つの質問が続いてはしまいましたが、2つとも何日かやった後にわからないので質問させて頂いたのです。 回答ありがとうございました。

すると、全ての回答が全文表示されます。
  • tatsumi01
  • ベストアンサー率30% (976/3185)
回答No.1

perl は全然知らないので手助けにはなりません。 投稿タイトルが「文字認識について教えてください」となっていますが、質問内容は文字認識とは全く関係ありませんね。wawawawawa さんの書いているプログラムが文字認識目的のものかも知れませんが。 タイトルは、たとえば「配列への連続的な値の代入について」など具体的な問題に関連するものにした方が回答が得られやすいと思います。

wawawawawa
質問者

お礼

タイトルへのご指摘ありがとございます。

すると、全ての回答が全文表示されます。

関連するQ&A