• ベストアンサー

条件式の書き方について

$aがaかbかcだった場合という条件式を if($a eq a || $a eq b || $a eq c) とせずに if($a eq aまたはbまたはc) というようにまとめて書くことは無理なんでしょうか?

  • poko
  • お礼率100% (1/1)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

正規表現を使えば良いと思います。 if ($a =~ m/^a|b|c$/) { } もし、a, b, c が全て単項であれば、 if ($a =~ m/^[abc]$/) { } でも良いと思います。

poko
質問者

お礼

できました。どうもありがとうございました。

関連するQ&A

  • 日付の条件をifの条件式を使って作成する場合

    if の条件式で a1        b1      c1 2006/8/6  2006/8/8 c1 の数式が =if(a1<>,a1,b1)   の場合 =if(a1>0,a1,b1)  の数式でも同じ答えがでますが、 a1<>0 と  a1>0 の違いは、どのような場合に違って表示されるのでしょうか? 日付の条件式を作成する場合は、<>の数式を利用した方がよいのでしょうか? お教えくださいますようお願いします。

  • 条件式で差額

      A    B    C    D 1 2 1000              といった状態に、 B2に(B1に入力があればA2の3%の結果を、無ければ0を)の式を =IF(B1="","0",A2*0.03) C2に(C1に入力があればA2の10%の結果を、ただしB2に値が有ればその差額を、無ければ0を)の式を =IF(C1="","0",A2*0.1)-IF(B1="",0,B2) D2に(D1に入力があればA2の12%の結果を、ただしB2またはc2のどちらかに値が有ればその差額を、無ければ0を)の式を =IF(D1="","0",A2*0.12)-IF(B1="",0,B2)-IF(C1="",0,C2) と表記すると例えばB1とD1に入力があればB2=30,D2=90で結果は問題ないのですがC2に(-30)と表示され、同様にB1のみ入力だとC2:D2に(-30)と表示されて困ってます。 この(-30)の表示をさせない正しい条件式が見当もつかず今回投稿させてもらいました。どうか皆さんご助力お願いします。

  • 3っの条件式の書き方をお聞きします。

    複数条件の式の書き方をお聞きします。 A.B.C の3っの条件式です。 Aが空白のときtrue、falseを○、 Bが空白のときtrue、falseを△、 Cが空白のときtrue、falseをとします。 A B C D E F G 1○△=false:false:false=◇ 2○△=false:false:false=◇ 3○△=false:false:false=◇、 trueを1、falseを0とし、 これを DEF G 111:空白"" 110: 101:△ 011:○ 100:И 010:Е 001:Ш 000:◇ と表示したときの、 この場合のG 1.2.3の式を教えていただきたい。 式が長すぎてどうすれば良いのか分かりません。 A.B.C3っの条件式は、どう書くのでしょうか。 エ2010。

  • Excelの複数の条件にあった式を教えて下さい。

       A     B     C    D    E 1   4.7          16    8    3 2  5.8          0.0   3.0   6.0 3  4.5 4  2.16 5  3.55    ・    ・      ・    ・   Aの列には1日の平均気温が入力されています。(A31まで) B1に、「A1が16℃以上だったら0.0、8℃以上16℃未満だったら3.0、3℃以上8 ℃未満だったら6.0」と式を作り、B2から下の欄も、「  」内の条件でした いのですが、教えてもらえないでしょうか? 宜しくお願いします。 あらかじめ、C1~E1に16℃、8℃、3℃と言う意味で数字を入れています。 C2~E2にも、条件を満たしたら、この数字になりなさいという意味で数字を 入れています。 IF文を使ってB1に =IF(A1>C1,”0.0”,IF(D1≦A1>C1,”3.0”,IF(E1≦A1>D1,"6.0",""))) と式を入れたのですが、#NAMEとエラーが出てきます。

  • IF関数で複数の条件の式

    エクセルのIF関数を教えてください。 A1=B1の時、C1に1と表示 A1=B2の時、C1に2と表示 A1=B3の時、C1に3と表示 上記3つの条件以外の場合は何も表示しない 以上の条件の時にC1に入れる式を教えてください。 宜しくお願いします。

  • Excel 条件付きの条件先が式の場合

    Excelでたとえば A1に入力された数値、B1にはA1を引数とした計算結果があるとします。B1の計算結果が0.09だった場合だけC1に1を、そのほかの場合は2を表示させようとしました。 C1に =if(B1=0.09,1,2) の式を入れましたが、B1の計算結果が0.09でもC1には2が表示されます。そこで、C1に =if(int(B1*100)=9,1,2) の式を入れても結果は同じで、D1に=text(int(B1*100),0) の式をいれてからC1に=if(D1="9",1,2) でやっと1が表示されました。 これは当たり前のことなんでしょうか。このような方法をとらないと、数字の認識は難しいのでしょうか? 教えてください。

  • C言語の条件式での~(チルド)について

    C言語に関しての質問です。 以下のようなプログラムでは変数bをキャストした場合と しない場合で条件式の判定結果が違います。 変数bはもともとunsiged char型なのでキャストは不要だと 思ったのですが、なぜ結果が違うのでしょうか? (条件式if(a != ~b)の判定結果も偽になることを期待していました。) unsigned char a; unsigned char b; a = ~0x98; b = 0x98; if(a != ~b) { printf("こっちは入る"); } if(a != (unsigned char)(~b)) { printf("こっちは入らない"); }

  • 表計算のifの条件式について

    LibreOfficeの表計算のifの条件式について わからない点があります。 A1からA9までテストの点(満点100)が入力されています。 問題は 【59以下なら『C』、79以下なら『B』、100以下なら『A』とする。】 とあります。 なので(1)~(4)の導けそうな日本語文を考え その条件で入力しましたが、 (4)しか正しく導けませんでした。 (1)~(3)のダメな点は一体どこなんでしょうか? 何しろ初心者なもので、あまり専門用語を使わず 噛み砕いてご回答してくださるとよりありがたいです。 是非、よろしくお願いします。 (1)、100以下なら『A』、80未満を『B』、60未満を『C』とする。  =if(a1<=100,"A",if(a1<80,"B",if(a1<60,"C","")))  →全部がAになる (2)、100以下なら『A』、79以下を『B』、59以下を『C』とする。  =if(a1<=100,"A",if(a1<=79,"B",if(a1<=59,"C","")))  →全部がAになる (3)、60未満を『C』、80未満を『B』、それ以外を『A』とする。  =if(a1<60,"C",if(a1<80,"B","A"))  →全部がCになる (4)、60未満を『C』、80未満を『B』、100以下を『A』とする。  =if(a1<60,"C",if(a1<80,"B",if(a1<=100,"A","")))  →ちゃんとなる。

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 条件式の省略

    if文の条件式の中を省略したいと思っています。 for(i=0;i<5;i++){ if(p[i][0]==a[0]||p[i][0]==b[0]||p[i][0]==c[0]||p[i][0]==d[0] ||p[i][1]==a[0]||p[i][1]==b[0]||p[i][1]==c[0]||p[i][1]==d[0] ||p[i][2]==a[0]||p[i][2]==b[0]||p[i][2]==c[0]||p[i][2]==d[0] ||p[i][3]==a[0]||p[i][3]==b[0]||p[i][3]==c[0]||p[i][3]==d[0]){ continue; }else{ a[1]=p[i][0]; b[1]=p[i][1]; c[1]=p[i][2]; d[1]=p[i][3]; } ifの条件式の中のp[i][1]~p[i][3]を省略したいのですが、どうやったらできるかわかりません。ぜひ教えてください。

専門家に質問してみよう