初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-07-04 17:59:56

tomato
Member

1文字目が数字なら削除する計算式について

いつもお世話になります。
左から1文字目が数字なら削除するには、どうすればいいでしょうか?

現在、Substitute ( 大項目名 ;Filter ( 大項目名;"1234567890");"")
としてたのですが、2文字目に数字が来た場合も消えてしまい、
Left関数をいじってみたのですが、場所が悪いのか、結果が出ません。

Offline

#2 2017-07-04 18:13:57

Hiro
Member

Re: 1文字目が数字なら削除する計算式について

Middle(大項目名; 1+(Filter("1234567890";Left(大項目名;1))<>""); Length(大項目名))

Offline

#3 2017-07-04 20:03:13

tomato
Member

Re: 1文字目が数字なら削除する計算式について

Hiroさん、ありがとうございます。
私の頭では、全くもって何故そうなるのか?理解できませんが、解決しました。
じっくり紐解いてみたいと思います。

ありがとうございました!

Offline

#4 2017-07-04 20:50:57

Hiro
Member

Re: 1文字目が数字なら削除する計算式について

> 私の頭では、全くもって何故そうなるのか?理解できませんが、
論理式の計算結果が、真は1、偽は0を返すのを利用し、
Middle関数の先頭文字位置を調節しています。

変数を使って、元の1行式を見易く書き直せば、

Let(
[
   テキスト=大項目名フィールド;
   先頭文字位置=1+(Filter("1234567890";Left(テキスト;1))<>"");   //(先頭文字が数字なら、1を足す
   文字数=Length(テキスト)
];
   Middle(テキスト; 先頭文字位置; 文字数)
)

Offline

#5 2017-07-05 17:32:43

tomato
Member

Re: 1文字目が数字なら削除する計算式について

Hiroさん、解説をありがとうございます。

なんとなく、されていることは理解はできそうですが、Left(テキスト;1))<>の<>が理解できません。
初めて見る式なのですが、どういった働きをするものなのでしょうか?

しかしパッとこういう式を作れるのは凄いですね。
関数を複数掛け合わせた式を作るのが苦手なので、もっと勉強します!
ありがとうございます。

Offline

#6 2017-07-05 18:12:47

Hiro
Member

Re: 1文字目が数字なら削除する計算式について

「<>」は「≠」のことで、旧字体の不等号演算子です。
直接タイプする時は、旧字体「<>」の方が楽なので使っています。

以下の式は全て、問『テキストの先頭文字は数字か?』で、真は1、偽は0を返します。

・ Filter("1234567890";Left(テキスト;1)) <> ""
      ||
・ Filter("1234567890";Left(テキスト;1)) ≠ ""
      ||
・ If ( Filter("1234567890";Left(テキスト;1)) ≠ "" ; 1; 0)

Last edited by Hiro (2017-07-05 21:51:49)

Offline

#7 2017-07-05 22:17:32

Shin
Member

Re: 1文字目が数字なら削除する計算式について

Replace ( テキスト ; 1 ; Filter("1234567890";Left(テキスト;1)) ≠ "" ; "" )
も面白い式ですよ。

Offline

#8 2017-07-06 11:55:41

tomato
Member

Re: 1文字目が数字なら削除する計算式について

Hiroさん、ありがとうございます。
ぐるぐると悩みましたが、やっと理解できました。

Filter("1234567890";Left(テキスト;1)) <> ""

は、
テキスト一文字目が数字 <> "" (空白)が違う場合、1という意味なのですね。
つまり、数字が一文字目にあった場合は1になるので、二文字目からMiddleで抜き取るということですね!

""ってなんだとぐるぐるしてましたが、やっと理解できました。
しかし解ったからといって瞬時には出て来そうにないので、いろんなパターンを試してみたいと思います。
勉強になりました。

Shinさん、ありがとうございます。
違う関数ですが、考え方は同じですね!理解できました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 558.2 KiB (Peak: 582.1 KiB) ]