C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.35839 の関連記事表示

<< 0 >>
■35839  拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ テキスト編集 -(2009/05/14(Thu) 21:02:48)

    分類:[C#] 

    こんにちは。
    拡張子を判別したいのですが、正規表現をうまく書けません。
    どなたかjpgかpngのとき、と書く方法を教えてください。

    if (Regex.Match(args[1].ToLower(),"[(jpg)|(png)]").Success) {}

    と書いてみたのですが、うまくいかないみたいです。
    ご助言お願いします。
親記事 /過去ログ62より / 関連記事表示
削除チェック/

■35844  Re[1]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ επιστημη -(2009/05/14(Thu) 21:36:47)
>
    2009/05/14(Thu) 22:35:56 編集(投稿者)
    2009/05/14(Thu) 22:03:51 編集(投稿者)

    > うまくいかないみたいです。

    なにが/どのように「うまくいかない」?

    - コンパイルエラー?
    - 実行時エラー?
    - Matchするはずなのにしてくれない?
    - Matchしないはずなのにしちゃう?
    - ほかのなにか?

    # 雰囲気からして
    # Regex.Match(args[1].ToLower(), "\\.(jpg|png)$").Success
    # が"せーかい"かな。
記事No.35839 のレス /過去ログ62より / 関連記事表示
削除チェック/

■35852  Re[2]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ 倉田 有大 -(2009/05/14(Thu) 22:33:27)
    正規表現かー
    しばらく使ってないと忘れちゃうの僕だけでしょうか?^^; (質問と関係なくてすいません)
記事No.35839 のレス /過去ログ62より / 関連記事表示
削除チェック/

■35853  Re[1]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ まさる -(2009/05/14(Thu) 22:37:53)
>
    No35839 (テキスト編集 さん) に返信
    > こんにちは。
    > 拡張子を判別したいのですが、正規表現をうまく書けません。
    > どなたかjpgかpngのとき、と書く方法を教えてください。
    >
    > if (Regex.Match(args[1].ToLower(),"[(jpg)|(png)]").Success) {}
    >
    > と書いてみたのですが、うまくいかないみたいです。
    > ご助言お願いします。
    >

    まずは秀丸でもVisual Studioでもいいので正規表現を使った検索を実行してみて、
    上手くいくことを確認した上でプログラムに組み込むことをお勧めします。

    とりあえず参考URLでも。
    http://anond.hatelabo.jp/20080923015641
    の真ん中よりちょっと上くらいの「選択」のところを参考にしてください。
記事No.35839 のレス /過去ログ62より / 関連記事表示
削除チェック/

■35862  Re[2]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ テキスト編集 -(2009/05/14(Thu) 23:31:18)
    まず結論。

    教えていただいた、"\\.(jpg|png)$"でできました。
    ありがとうございました。

    「うまくいかない」の説明不足ですみません。
    正規表現がマッチしていなかったようです。
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/

■35861  Re[1]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ biac -(2009/05/14(Thu) 23:29:14)
>
    > 拡張子を判別したいのですが、正規表現をうまく書けません。
    > どなたかjpgかpngのとき、と書く方法を教えてください。

    うまく書けないうちは、本番では使わなければいいのよ〜 f(^^;

    jpg と png だけなら、 こうやって…
    string fileNameUC = args[1].ToUpper(CultureInfo.InvariantCulture); //CA1308
    if (fileNameUC.EndsWith(".JPG") || fileNameUC.EndsWith(".PNG")) {
     // なんかする
    }
    …ベタベタに書いたってたいしたことないんだし。
    もうちっと種類が多かったら、 拡張子だけ切り出して switch 文で振り分けりゃいいし。


    ※ うまく書けるようになるための練習なら、 おおいにけっこう。
     でも、 練習だったら、 もっと目標を絞ってシンプルに書くのが吉かと。
     Console.WriteLine("1:" + Regex.IsMatch("hoge.jpg", "jpg").ToString());
     Console.WriteLine("2:" + Regex.IsMatch("hoge.jpg", "(jpg)").ToString());
     Console.WriteLine("3:" + Regex.IsMatch("hoge.jpg", "[(jpg)|(png)]").ToString());
     Console.Write …

    > if (Regex.Match(args[1].ToLower(),"[(jpg)|(png)]").Success) {}
    > と書いてみたのですが、うまくいかないみたいです。

    これでは、 うまくいかない理由として、
    ・args[1] が想定と違う
    ・ToLower() の動作が想定と違う
    ・Match() の動作が想定と違う
    ・if 文が成立したときの動作 ( {} の中身 ) が想定と違う
    …と、 すくなくとも 4つくらいは想定しなきゃいけなくなります。
記事No.35839 のレス /過去ログ62より / 関連記事表示
削除チェック/

■35863  Re[2]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ テキスト編集 -(2009/05/14(Thu) 23:47:59)
    みなさん。
    ご助言ありがとうございます。
    
    おっしゃるとおり、最初はべたに書いていたのです。
    if (args[1].ToLower().Contains("jpg") || args[1].ToLower().Contains("png")) 
    ただ、拡張子が増えて長くなってあまりにも見通しが悪くなり、
    いっちょう正規表現でも書いてみるかというあたりではまっていました。
    
    いちおう、MessageBox.Show();を大量に使って、
    ・args[1] は想定通りである。
    ・ToLower() の動作は想定通りである。
    (これを使う前はもっとすごかったです…。
    if (args[1].Contains("jpg") || args[1].Contains("Jpg") || ……)
    ・if 文が成立したときの動作 ( {} の中身 ) の動作は想定通りである。
    
    というところは確認して、最後にのこった正規表現で添削をお願いしたしだいです。
    
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/

■35864  Re[3]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ επιστημη -(2009/05/15(Fri) 00:02:47)
>
    2009/05/15(Fri) 00:03:22 編集(投稿者)

    > if (args[1].ToLower().Contains("jpg") || args[1].ToLower().Contains("png")) 

    Containsだとファイル名の途中に"jpg"があらわれたとき誤認識してアウト。

    > ただ、拡張子が増えて長くなってあまりにも見通しが悪くなり、

    string[] extends = { ".jpg", ".png", ".bmp", ".gif", ... };
    foreach ( string ext in extends ) {
    if ( args[1].ToLower().EndsWith(ext) ) {
    見つけたー♪
    }
    }
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/

■35873  Re[4]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ も -(2009/05/15(Fri) 08:09:30)
    HashSet#Containsなら直感的
記事No.35839 のレス /過去ログ62より / 関連記事表示
削除チェック/

■35875  Re[5]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ επιστημη -(2009/05/15(Fri) 08:40:36)
>
    2009/05/15(Fri) 08:40:53 編集(投稿者)

    > HashSet#Containsなら直感的

    ↓ こゆこと? 直感的かぁ?

    HashSet<string> extends = new HashSet<string>(new string[] { ".jpg", ".png", ".bmp", ".gif" });
    if ( extends.Contains(args[1].Substring(args[1].LastIndexOf('.')).ToLower())) {
    Console.WriteLine("{0} is an image-file.", args[1]);
    }

    # ファイル名が '.' を含まないと例外吹っ飛ぶしぃ
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/

■35880  Re[6]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ も -(2009/05/15(Fri) 09:30:07)
    No35875 (επιστημη さん) に返信
    > 2009/05/15(Fri) 08:40:53 編集(投稿者)
    >
    > > HashSet#Containsなら直感的
    >
    > ↓ こゆこと? 直感的かぁ?
    >
    > HashSet<string> extends = new HashSet<string>(new string[] { ".jpg", ".png", ".bmp", ".gif" });
    > if ( extends.Contains(args[1].Substring(args[1].LastIndexOf('.')).ToLower())) {
    > Console.WriteLine("{0} is an image-file.", args[1]);
    > }
    >
    > # ファイル名が '.' を含まないと例外吹っ飛ぶしぃ
    たぶんそこはcontains()かんけいな(ry
    何かPathから拡張子持ってくる方法があったような気がする.


    # 解決墨はずしてた
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/

■35881  Re[7]: 拡張子を判別したいのですが、正規表現をうまく書けません。
□投稿者/ επιστημη -(2009/05/15(Fri) 09:44:06)
>
    > 何かPathから拡張子持ってくる方法があったような気がする.
    
    ↓こゆことかな?
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    
    class Program {
      public static void Main(string[] args) {
        HashSet<string> extends = new HashSet<string>(new string[] { ".jpg", ".png", ".bmp", ".gif" });
        if ( extends.Contains(Path.GetExtension(args[1].ToLower())) ) {
           Console.WriteLine("{0} はきっと画像ファイル。", args[1]);
        }
      }
    }
    
記事No.35839 のレス / END /過去ログ62より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -