5 返信 最新の回答 日時: Dec 22, 2009 3:07 AM ユーザー:snow_1982

    ファイル名の抽出

    snow_1982

      タイトル

      ファイル名の抽出

      フォーラムに投稿

      お世話になります。GetAsText関数にて、挿入画像のデーターをテキストとして取り出しました。このテキストから、ファイル名だけを

      抽出したいと思い、RightWords関数を使い、単語数を1としました。すると、ファイル名にも問題があるのですが、うまくいきません。

      ちなみに、ファイル名は、"年賀状10_DM.jpg"です。 結果は、DM.jpgとなっていました。なるほど、アンダーバーは使えないのかと

       "年賀状10DM.jpg"というファイル名に変更しました。RightWords関数を使い、単語数を1と再びすると、結果は、”10DM.jpg"と、、。

       ちなみに、GetAsText関数で取り出したテキストは以下です。 

      imagemac:/OSX/Users/Yoshi/Desktop/年賀状10DM.jpg 

       

      多分、年賀状と10DMが別のWordと認識されたということだと思いますが、、、。 

      年賀状10DM.jpg を抽出するのに良い関数を教えてください。よろしくお願いいたします。 

        • 1. Re: ファイル名の抽出
          usuitax
            

          単語数の判別というのが、

          英文字ならスペースまででひとつ。(おそらくアンダーバーも区切りスペースと同様と認識されたのでしょうが。)

          日本語の場合は、漢字なら漢字、カタカナならカタカナが連続している文字列をひとつとカウントします。

           

          なので、年賀状10DM.jpgは「年賀状」という漢字の文字列と「10DM.jpg」という英文字の単語ふたつと認識されます。

          例えば、ファイル名を「Nengajo10DM.jpg」にするか、

          そのままのファイル名で関数で取得する単語数を「2つ」にすればうまくいくと思います。

          • 2. Re: ファイル名の抽出
            yasuhiro
              

            関数1つだけでは無理で、以下のような式でいけました。

             

            Let( 

            [

            _T = "imagemac:/OSX/Users/Yoshi/Desktop/年賀状10DM.jpg" ; 

            _L = Length( _T ) ;

            _P = Position(  _T ;"/" ; _L ; -1)

            ] ; 

            Right( _T ;  _L -_P )

            )

            • 3. Re: ファイル名の抽出
              fmdiary
                

              snow_1982さんこんにちは 

               

              該当のファイルへのパスの、一番右にある"/"から右のデータを抽出すれば、ファイル名となります。

              式だと、以下のような式が考えられます。 

               

              Right ( ファイルパス ; Length ( ファイルパス ) - Position ( ファイルパス ; "/" ; Length ( ファイルパス ) ; -1 ) )

              • 4. Re: ファイル名の抽出
                Hiro
                   > 抽出したいと思い、RightWords関数を使い、単語数を1としました。すると、ファイル名にも問題があるのですが、うまくいきません。

                Word系は日本語には通用しないので、Value系のRightValuesに替えると、同じ考え方でも良いでしょう。

                但し、 RightValuesは末尾にも一律改行が付いてしまうので取り除く処理が必要です。

                 

                Substitute(RightValues(Substitute(GetAsText(画像フィールド);"/";"¶");1);"¶";"")

                にHiroにより編集されたメッセージ
                • 5. Re: ファイル名の抽出
                  snow_1982
                    
                  usuitax さま
                  Tambara さま
                  fmdiary さま
                  Hiro さま
                   
                  お答えありがとうございました。 ファイルメーカーの奥行きと可能性を感じました。まだ、理解できていませんが、 Tambara さまの
                  お答えのコピペで使わせていただきました。皆様のアイディアが、少しずつ勉強します。